これは件名コードです:
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
の値をどのように取得できるかということです。それらが同じディレクトリにあるという理由だけですか?または同じ解決策?i
.cpp
externfile.cpp
そしてより良い方法で:プロジェクトのコンパイル中にソースファイルはどのように「マージ」されますか(指定する必要がある場合はVS2008を使用)?彼らはどのような「順序」で配置されていますか?そして、それらはどのようにスコープされていますか?