我怀疑我是否用静态声明了全局变量。
文件1.c
static int a=5;
main()
{
func();
}
可以使用 extern 在另一个 file2.c 中访问吗?
文件2.c
func()
{
extern int a;
printf(a);
}
还是只能使用 extern 访问没有静态声明的全局变量?
没有。file1.c 中的Aa
用内部链接命名一个变量。来自不同翻译单元的相同名称将引用不同的变量。这也可能有内部链接,或者它可能(如在本例中)有外部链接。
但是,在同一个文件中,您可以通过内部链接引用文件范围变量extern
。
static int a;
int main(void) {
extern int a; // still has internal linkage
printf("%d\n", a);
}
这似乎是对static的两种含义的误解: