【发布时间】:2013-01-20 00:53:27
【问题描述】:
这是主题代码:
externfile.cpp
int i = 10;
mainfile.cpp
#include <iostream>
using namespace std;
extern int i;
int main(int param)
{
cout << i << '\n';
int i = 0;
cout << i << '\n';
cout << ::i << '\n';
}
编译这个程序时(使用 Visual Studio 2008),它工作正常,输出如下:
10
0
10
这对我来说并不奇怪,这是范围的问题。
但让我感到困惑的是:mainfile.cpp 文件如何从另一个.cpp 文件(在我们的例子中为externfile.cpp)获取i 的值?仅仅是因为它们位于同一个目录中吗?还是同样的解决方案?
还有一种更好的方式:编译项目时如何“合并”源文件(如果我应该指定,使用 VS2008)?它们按什么“顺序”排列?它们的范围如何?
【问题讨论】:
-
这是链接器的全部工作。
-
不是完全重复,但可能会有所帮助:stackoverflow.com/a/6264256/567864.
标签: c++ compilation linker extern resource-files