私はこのようなものを使用しています:
int main(int argc, char *argv[])
{
#ifdef DEBUG
printf("RUNNING DEBUG BUILD");
#else
printf("Running... this is a release build.");
#endif
...
ただし、これには、デバッグビルドのために-DDEBUGを指定してコンパイルする必要があります。 GCCは、チェックできる独自のプリプロセッサマクロを定義するなど、デバッグシンボル(-gフラグ)を使用してコンパイルするタイミングを判断する方法を提供しますか?
答えはノーです。通常、これらのマクロ(DEBUG、NDEBUG、_DEBUG)は、アクティブな構成(デバッグ/リリース)に応じて、IDE/makeシステムによって設定されます。私はこれらの答えが助けになると思います:
私が探していた答えは、本質的にはAdamがコメントとして投稿したものだと思います。
コンパイラーの仕事には前処理は含まれていません。実際、コンパイラーは、プリプロセッサーが処理していないプリプロセッサースイッチをコード化します。
したがって、コードを分岐する方法はプリプロセッサを利用する必要があるため、コンパイラgetsがすでにどちらかであるすべてのコード(デバッグコードまたはリリースコード)を意味するため、私には不可能です私の質問がこの段階で行うことを実行する(プリプロセッサの後)。
したがって、プリプロセッサがコードをフィードするための独立したプロセスとして設計されていることが直接の結果です。