根據我對C++ 2011規範的閱讀,我認爲下面的代碼會在file1.cc中創建一個帶有外部鏈接的變量'x'。我認爲我可以從main.cc訪問該變量,因此該程序將打印'x'。然而,我反而從main.cc中得到一個未定義的引用'x'的鏈接器錯誤。爲什麼file1.cc中的'x'有內部連接?我認爲編譯器正在將第3.5.3節解釋爲在file1.cc中給出'x'內部鏈接。然而,我並沒有「明確地聲明」'x'是'const',正如該部分所要求的那樣。我正在使用g ++版本4.6.3。爲什麼'x'有內部連接而不是外部連接?
main.cc:
#include <iostream>
typedef const char CC;
extern CC x[];
int main(void) {
std::cout << x[0] << std::endl;
}
file1.cc:
typedef const char CC;
CC x[] = "abc";
用gcc-4.8.2和鐺-3.3和'-std = C++ 11'兩我收到一個未定義的符號錯誤。原因在[這個問題]中給出(http://stackoverflow.com/questions/998425/why-does-const-imply-internal-linkage-in-c-when-it-doesnt-in-c) – vonbrand