-1
私はGCCを使っていくつかのCファイルを前処理しています。GCC前処理:放置しておきます。ゼロ値を仮定しない条件式
Examplesource:
#define A 1
#define B 0
#if A && B > 0
bla()
#else
#if C == 0
foo()
#else
foo2()
#endif
foo3()
#endif
私がコメント(-CC
)を出て、マクロ(-fdirectives-only
)を介して動作しないバッチファイルからこれを実行している:
gcc -E -CC -fdirectives-only -Wundef infile.c > outfile.c
それは私に次のような出力を提供します上記の例では、自動的にC = 0とみなされます。
foo()
foo3()
#if C == 0
foo()
#else
foo2()
#endif
foo3()
それを行うにはどのような方法があります:は、私は(NO仮定は、GCCによって取られていない)、以下の出力をしたいと思いますか?私はそれがGCC SHOULDの仕組みを知っていますが、手作業で行うこともできます。
私が知っている、代替COANは、これが可能になるだろう - しかし、私は事前に:-(
おかげ
私は#を意図SORRY GUYSを、それを使用することはできませんよ! MY SOURCE & B. EDITEDを定義
前処理行は、他のソースがコンパイルされる前に処理されます。 '#if A && B> 0 'の' A'と 'B'は' A = 1'や 'B = 0'ソース行とは何の関係もありません。 '#define'でない名前はプリプロセッサ演算のために' 0'に置き換えられています。 –
入力と出力が一致しません。私はいくつかのコピー/ペーストエラーが疑わしい。 – gnasher729
ちょうど 'A = 1'と' B = 0'は何ですか?有効ではありません。 – Lundin