2012-04-24 5 views
1

stackoverflowの中に私の前の質問の続きとして: Getting LINK error : Extern in C++. How to access the value of a variable which is modified in File A.CPP in another file File B.CPP 私のC++のコードでI別のファイル "A"で実際に修正されたファイル "B"に変数 "VarX"を使用したいとします。 私は外観@を持っていたので、&エクステンションコンセプトを使っています。エクスターナルます。extern VARX変数の::エラーLNK2001:未解決の外部シンボル "unsigned int型VARX"(?VARX @@ 3IA)

How do I use extern to share variables between source files?

エラーLNK2001:未解決の外部シンボル "unsigned int型 VARX"(?VARX @@ 3IA)

次のように私のシナリオは次のとおりです。

File1.h 
extern unsigned int VarX; 

File2.cpp 
#include File1.h 
VarX = 101; 

File3.cpp 
#include File1.h 
unsigned int temp = VarX; 

IMP注:ヘッダーファイルFile1.hには他の多くの構造定義がありますが、rdefi Externの定義から離れています。

誰かが私を助けることができますか? File2.cppで変更されたVarXの値を別のFile File3.cppでどのように読み取るのでしょうか。

+1

'VarX = 101;'は、C++での宣言や初期化としては無効です。それはあなたの実際のコードですか? – peterchen

答えて

2

あなたはグローバルスコープでVarXを定義する必要があり、そうでなければないでもあろうから、私は、あなたが今やっていないと仮定していましたコンパイル:

//File2.cpp 
#include "File1.h" 
unsigned int VarX = 101; //this has to be outside any code block or namespace 
          //or class... 
+0

優れています。出来た。 :) どうもありがとう。 Stackoverflow rocks。私は質問を受けました。なぜ私はFile2.cppでのみVarXを宣言する必要があるのですか?File2.cppで以前に割り当てられたこのvaribale "VarX"を使用しているFile3.cppでこのようなエラーが発生しないのはどうしてですか? ?あなたは疑いを晴らすことができますか?ありがとう:) – codeLover

+0

@codeLoverそれは1つの定義ルールが意味するものです。変数** once **を定義するのは、あなたのケースでは、 'File2.cpp'です。 'extern'宣言は*"この変数はどこかで定義されていますので、使用することができます。 "* –

+0

ありがとうございました。そして、私はあなたがヘッダーファイルのexternとして宣言されているため&私たちは他のファイルでこの定義を利用したいので、(File2.cppのグローバルスコープで)すべての関数、クラスなどの外で変数を定義するように言ったと思いますあまりにも。情報ありがとうございました:) – codeLover

2

次の内容のFile1.cpp を持っている必要があります。

unsigned int VarX = 0; 
関連する問題