2012-03-30 7 views
5

私は、Cマクロの値をgcpの-Dmacro = valueオプション付きプリプロセッサに渡そうとしています。しかし、それは私が期待していることをしません。これは私のコードの基礎である:gccがコマンドラインからマクロ値を渡すのはなぜですか?

#define T0 0 
#define T1 0 
#define T2 0 
#define T3 0 

int main(){ 

    int f[9]; 

    start(f[T0], f[T1], f[T2], f[T3]); 

    return 0; 
} 

gcc -DT3=1 -Eを実行すると、プリプロセッサは、T3の元の値に代わるものではありません示しています。私は何が欠けていますか、どのようにして価値が正しく伝わるのでしょうか?

+0

私はちょうどこの問題に直面していましたが、私はいつもコマンドライン定義がインライン定義を上書きすると思っていました。私は漠然とMicrosoftコンパイラがそれをしていることを覚えていますが、残念ながら、私はしばらくアクセスできない。私は誰でもMSVCをテストして情報を投稿することができます。 – ysap

答えて

7

このスイッチはマクロを定義しますが、あなたのコードはそれを0に戻します。コードからその定義を削除するか、ifdefでその定義を取り除いても問題ありません。

+3

ifdefで周囲を囲み、トリックをしました、ありがとう。 – quetric

関連する問題