0
考慮下面的代碼:什麼外部連接意味着
#include <stdio.h>
namespace EnclosingNmspc
{
namespace Nmspc
{
extern int a;//This a and the a defined above denote the same entity
int a=5;
}
}
extern int a;
int main()
{
printf("%d\n",a);
}
有從3.5/2的報價:
當一個名稱具有外部連接,它表示實體可以是 稱爲以其他翻譯單位的名稱或來自同一翻譯單位的其他範圍的名稱。
我不明白爲什麼這個規則在我的情況下不起作用?我有undefined reference
鏈接錯誤。
但規格說,它是指_The實體可以通過名稱從其他翻譯單位的範圍unit'._ –
簡稱或'從同翻譯的其他範圍@StAntario你仍然需要提供一個定義,編譯器不會自動爲你做。 –
它要麼聲明'extern int a;',並在其他地方定義**或** define'int a;',並通過'extern'聲明從別處訪問它。如果你想從外部鏈接中隱藏'a',把它放在一個未命名的名稱空間中。 –