我对C编程的模块化结构不是很熟悉,所以我决定向你求助。
假设我在项目中有两个模块一个是sx1272.c,另一个是sx1272.c。变量radio_is_on在sx1272_ll.c中声明如下:

static uint8_t volatile radio_is_on;

然后通过sx1272.c中的函数进行访问,如下所示:
foo(){
   ...............
   if(radio_is_on){
      blablabla...
      ............
   }
   ...............
}

那么,如果无线电是静态的(在模块范围内),为什么其他模块会访问它呢?
sx1272_ll.c
sx1272.c

最佳答案

在我看来你包括

 #include "sx1272_ll.c"

在你的源文件sx1272.c中
因此,文件sx1272_ll.c的全部内容只是复制粘贴到sx1272.c中,在预处理阶段您已经编写了#include "sx1272_ll.c"的位置。
请参阅此链接:https://en.wikipedia.org/wiki/C_preprocessor#Including_files

关于c - 如何从另一个模块访问静态变量(模块范围内的静态)?在C中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32179177/

10-16 20:23