【发布时间】:2015-08-28 11:35:43
【问题描述】:
文件A.cpp:
#include <iostream>
extern int iA;
extern int iB= iA;
int main()
{
std::cout<<iA<<','<<iB;
}
文件B.cpp
extern int iB;
extern int iA = 2*iB;
编译链接运行,在调试和发布模式下出来是0,0
我的问题是它是如何工作的,为什么在链接阶段没有问题?
我正在使用 VC++2003。
【问题讨论】:
-
gcc 报告:
fileb.cpp:2: warning: 'iA' initialized and declared 'extern' extern int iA = 2*iB; ^ -
@PiotrNycz VisualStudio 中没有警告。 gcc 给出的内容看起来根本不像警告。我敢打赌,如果我有,它会给出同样的警告:extern int iA = 10;
-
是的,你会有同样的警告,顺便说一句 - gcc 也会产生
0,0
标签: c++ compilation linker external