0

.inl ファイルと .cpp ファイルがあり、.inl ファイルにはテンプレート関数が含まれており、以下のようにグローバル変数を宣言していました。

int グローバル値 = 0; そのプログラムをコンパイルした後にexternキーワードを使用して.cppファイルにリンクすると、エラーが発生しました

複数宣言エラー 最初にここで定義されたエラー

なぜこのエラーが発生するのか、誰かが私に提案できますか?

4

1 に答える 1

2

要するに-cppファイルには、次のものがあります。

int global_value = 0;

inl ファイルには、次のものがあります。

extern int global_value;

グローバル変数は、1 つの翻訳単位 (cpp ファイル) でのみ宣言する必要があります。他のすべての翻訳単位はextern、直接またはヘッダー ファイルを介して を使用する必要があります。あなたの場合、.inl ファイルを含むすべての翻訳は効果的にグローバルを宣言するため、エラーが発生します。したがって、cpp で宣言し、inl に配置externします (inl ファイルを他の cpp ファイルに含めると仮定します)。

于 2012-06-30T19:30:10.280 に答える