0

後でライブラリで使用するために、すべての定数変数を定義するヘッダー (のみ) ファイル constants.h があります。ただし、実装ファイルでランタイムを定義したい変数が 1 つあります。私はこのようなことをしようとしました:

定数.hpp

    extern const unsigned int numTests;

run.cpp の別の場所

    const unsigned int numTests = 10;

そして、さらに別のファイル tester.cpp が使用します

    if ( n < numTests) {
       // do something
    }

これをコンパイルすると、未定義シンボル numTests として tester.o でリンカー エラーが発生します。なぜこれが起こっているのか理解できます.tester.cppにはrun.cppではなくconstants.hppが含まれているため、run.cppで初期化された定数numTestsを見つけることができません。

それを行うより良い方法はありますか?

ティア、ニキル

4

2 に答える 2

0

両方run.cppをコンパイルしていることを確認tester.cppし、プログラムをコンパイルするときにリンカ エラーが発生しないようにします。

于 2012-05-15T03:16:20.593 に答える
0

実行可能ファイルを作成するときに、run.o をリンクする必要があります。

g++ -o tester tester.cpp run.o   ; for GNU C++

(GNU C++ を使用していない場合は、独自のコンパイラのコマンド ライン スイッチを確認してください)

于 2012-05-15T03:21:40.897 に答える