該代碼被許多人視爲鑑於C++
// Foo.cpp
const int Foo = 99;
// Main.cpp
extern const int Foo;
int main()
{
cout << Foo << endl;
return 0;
}
原因會產生誤差是全球常量具有內部範圍和它是默認的靜態。
解決方案是: -
//Foo.h
extern const int Foo;
// Foo.cpp
#include "Foo.h"
const int Foo = 99;
// Main.cpp
#include "Foo.h"
int main()
{
cout << Foo << endl;
}
我常想,EXTERN被用來告訴內存爲indentifer已經在其他文件中的某個地方分配的編譯器。
在上面的代碼中應用相同的邏輯,任何人都可以解釋這裏發生了什麼,或者extern在C++中有不同的含義?
enter link description here
還要考慮這個網頁它毀了我所有的直覺..
大約兩個小時前你沒問同樣的問題嗎?你有沒有讀過那裏的答案?如果您仍然懷疑您之前詢問過的問題,則應該將您的疑問作爲對答案的評論,而不是爲此提出新問題。 – 2012-01-27 13:54:28
@als我認爲清除別人的疑慮是最好的。 – 2012-01-27 15:02:52
好吧,不要一次又一次地提出同樣的問題,如果您不明白答案,請在答案下的評論部分提問,而不是開始另一個問題。請閱讀SO FAQ。 – 2012-01-27 15:11:03