2011-12-19 3 views
3

私はいくつかの数値的な仕事をするC++ライブラリを持っています。主なパラメータはセグメントの数です。速度の面では、セグメント数はconstですが、-DSEGMENTS 32を使用してコンパイル時に定義したいと思います。ヘッダーは次のようになります。const intに定義しますが、インストールされたヘッダに値を入れてください

#ifdef SEGMENTS 
const int segments = SEGMENTS 
#else 
const int segments = 20 
#endif 

これは機能します。しかし、このライブラリにリンクしているプログラムは-DSEGMENTSを得ていないので、segmentsは常に20です。constがなければ私は解決策を知っていますが、わかりません。 cmakeで可能であれば、externのトリックやプリコンパイル後にヘッダをインストールすると思います。

+0

ヘッダーにセグメント数が表示されない場合、問題は次のとおりです。セグメント数を渡すにはどうすればよいですか? –

+0

私は、CとC++が 'const'の扱いにおいて異なっていると思います。あなたの質問のテキストを反映するようにタグが変更されました – pmg

答えて

5

あなたが値を取るために他のライブラリを使用する場合は、外部あなたは、ヘッダー内の外部としてそれを宣言する必要があります:あなたは上記の説明のようにあなたは一つのコードファイル(.CPP)で定義する

extern const int segments; 

#ifdef SEGMENTS 
const int segments = SEGMENTS 
#else 
const int segments = 20 
#endif