根据我对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