的
extern
關鍵詞的意思是 「無申報確定」。換句話說,它是一種顯式聲明變量的方法,或者在沒有定義的情況下強制聲明。 也可以明確定義變量,即強制定義。這是通過將一個初始化值分配給一個變量完成的。
這意味着,一個extern
聲明初始化變量作爲該變量的定義。所以,
/* Just for testing purpose only */
#include <stdio.h>
extern int y = 0;
int main(){
printf("%d\n", y);
return 0;
}
應該是有效的(compiled in C++11)。但是,當選擇-Wall -Wextra -pedantic -std=c99
在GCC 4.7.2編譯,生成警告:
[Warning] 'y' initialized and declared 'extern' [enabled by default]
這不應該。據我所知,
extern int y = 0;
實際上是相同的
int i = 0;
什麼錯嗎?
[This](http://stackoverflow.com/questions/4268589/warning-in-extern-declaration)也可能有所幫助。不是被接受的答案,而是[AndreyT]提供的答案(http://stackoverflow.com/users/187690/andreyt)。特別注意答案的最後一行:_Just在編譯器設置中禁用這個警告(並且,請寫一封關於GCC團隊的粗魯的信件)._ – devnull
@devnull;是的.. – haccks
@devnull;人。你救了我。我一個小時左右就搞亂了!非常感謝:) – haccks