我有几个C源文件,它们都声明了个别名称相同的静态全局变量.我的理解是每个文件中的静态全局变量应该只在该文件中可见,并且不应该应用外部链接,但实际上我可以在调试时看到同名的变量共享相同的内存地址.
就像static关键字被忽略一样,全局变量被视为extern相反.为什么是这样?
foo.c的:
/* Private variables -----------------------------------*/
static myEnumType myVar = VALUE_A;
/* Exported functions ----------------------------------*/
void someFooFunc(void) {
myVar = VALUE_B;
}
Run Code Online (Sandbox Code Playgroud)
bar.c:
/* Private variables -----------------------------------*/
static myEnumType myVar = VALUE_A;
/* Exported functions ----------------------------------*/
void someBarFunc(void) {
myVar = VALUE_C;
}
Run Code Online (Sandbox Code Playgroud)
baz.c:
/* Private variables -----------------------------------*/
static myEnumType myVar = VALUE_A;
/* Exported functions ----------------------------------*/
void someBazFunc(void) {
myVar = VALUE_D;
}
Run Code Online (Sandbox Code Playgroud)
myVar = ...在每个函数内的行上设置断点.someFooFunc, …