我有2 C
文件在下面。從我讀的內容來看,我知道全局變量的默認存儲類是extern。如果我明確鍵入它,我得到未定義的變量錯誤。我在這裏錯過了什麼?這是否意味着當我省略extern關鍵字時,它就變成了一個定義,但是當我將它只輸入一個聲明時?C - 爲全局變量明確寫入extern關鍵字
file1.c中
#include <stdio.h>
#include <stdlib.h>
extern void file2function();
int variable; // if i put extern i will get error, isnt it implicitly extern?
int main()
{
variable = 1;
printf("file1 %d\n",variable);
file2function();
return 0;
}
file2.c中
#include <stdio.h>
#include <stdlib.h>
extern int variable;
void file2function(){
variable = 2;
printf("file2 %d\n",variable);
return;
}
是的,除非你還提供初始化('extern int variable = 0;')。請參閱http://port70.net/~nsz/c/c11/n1570.html#6.9.2p4。請注意,C++對待它們的方式不同。 – PSkocik
想一想如果你把所有的聲明都放在extern中,那麼應該在哪裏分配存儲空間?你無法區分唯一真正的定義。 – Jack
所以我必須省略extern或者使用初始化工具來指出應該在哪裏分配存儲空間? – Splash