7

2 つの cpp ファイル (A.cpp と B.cpp) の間でいくつかのベクトル変数 (V1 と V2) を共有 (グローバル化) したいと考えています。次のコマンドで、Ah に V1 と V2 の両方を既に定義しています。

extern vector<uint64_t> V1;
extern vector<uint64_t> V2;

また、A.cpp ファイルと B.CPP ファイルの両方に #include "Ah" を追加しました。これらの CPP ファイルの両方で V1 と V2 の要素にアクセスできるようにするには、他に何をすべきか教えてもらえますか?

前もって感謝します

4

3 に答える 3

10

まず、ベクトルを定義する場所を選択する必要があります。を選んだとしましょうA.cpp

( A.cpp1 つのファイルでのみ - 複数のファイルで同じオブジェクトを定義すると、複数の定義済みシンボル エラーが発生します)で、ベクトルをグローバル変数として定義します。

 vector<uint64_t> V1;
 vector<uint64_t> V2;

B.cpp(およびアクセスしたい他のすべてのファイルV1と でV2)ベクトルを として宣言externします。これにより、実際のオブジェクトを他の場所で検索するようリンカーに指示されます。

 extern vector<uint64_t> V1;
 extern vector<uint64_t> V2;

ここで、リンク手順V1で and V2fromがand from (またはこれらのオブジェクトが定義されB.cppている場所)に接続されます。V1V2A.cpp

于 2013-05-02T22:30:10.793 に答える
2

externこれは、変数を DECLARES するだけで、DEFINE しないことを意味します。これらの変数の DEFINITION は、ソース ファイル (ヘッダーではない) のどこかに 1 つだけ必要です。DEFINITION は DECLARATION のように見えますが、extern

于 2013-05-02T22:33:40.230 に答える
2

ヘッダー ファイルに宣言を作成しました。ここで、単一のコンパイル ユニット (.cpp ファイル) で定義を作成する必要があります。

.cpp ファイルを選択し、そこに定義を配置します。externこの場合、キーワードがないことを除いて、定義は宣言と同じです。

vector<uint64_t> V1;
vector<uint64_t> V2;
于 2013-05-02T22:33:54.137 に答える