0
我明白爲什麼這會不會鏈接:爲什麼值賦值排除extern關鍵字並聲明變量?
extern bool g_WinGame;
...
g_WinGame=true;
但是爲什麼這編譯和鏈接?
extern bool g_WinGame=false;
...
g_WinGame=true;
我使用MSVC 2010
[編輯]所有解釋HERE
我明白爲什麼這會不會鏈接:爲什麼值賦值排除extern關鍵字並聲明變量?
extern bool g_WinGame;
...
g_WinGame=true;
但是爲什麼這編譯和鏈接?
extern bool g_WinGame=false;
...
g_WinGame=true;
我使用MSVC 2010
[編輯]所有解釋HERE
extern bool g_WinGame;
是一個聲明。
extern bool g_WinGame=false;
是一個定義。這裏extern
是多餘的,但合法。
第二個例子中的'extern'可以忽略。它相當於'布爾g_WinGame =真' – 0x499602D2
好吧,這就是問題,爲什麼它是合法的?因爲聲明extern似乎是合法的,所以它不是...... – Valmond
因爲在使用'const'時可以使用extern覆蓋內部鏈接。例如,在名稱空間範圍內,「int const x = 5」具有內部鏈接,但「extern int const x = 5」具有外部鏈接。 – 0x499602D2