マクロをデバッグするとき、私は現在を検出、すなわちGCC -E
cc -E -DPREPROCESSING ...
として打ち鳴らすまたはGCCを呼び出します。
定義が冗長であることが私には発生しました。コンパイラが前処理後に停止することを検出するためにソースに書き込むことができる式があるので、ビルドスクリプトからこの定義を削除しますか?
#if magic
#define PREPROCESSING
#ending
ドキュメントを見てもわかりませんが、運があれば何か不足しています。
これは非常に一般的な価値を持っていないと、ビルドのバグを導入する持ちます。ビルド・システムは、別のステップとして前処理を選択し、コンパイラーを複数回呼び出すことができます。この機能が存在する場合、前処理と別々のコンパイル(クロスプラットフォーム並列ビルドのパフォーマンスを向上させるなど)は、前処理や単一実行でのコンパイルとは異なる出力を生成します。それは非常に驚くばかりでバグのある行動になります。この場合、プリコンパイルされたヘッダをどのように処理しますか? –