DEBUGモードでのみコンパイルする必要があるプログラムがあります。 (テスト目的)
プリプロセッサでRELEASEモードでのコンパイルを防ぐにはどうすればよいですか?
どこにでも配置:
#ifndef DEBUG
#error Only Debug builds are supported
#endif
Cは#error
ステートメント、およびほとんどのコンパイラは#warning
ステートメント。 gccドキュメントが推奨 メッセージを引用します。
より洗練されたものかもしれませんが、それは以前のソリューションのコピー&ペーストにすぎません。 :-)
#ifdef DEBUG
#pragma message ( "Debug configuration - OK" )
#Elif RELEASE
#error "Release configuration - WRONG"
#else
#error "Unknown configuration - DEFINITELY WRONG"
#endif
追伸警告を生成する別の方法もあります。参照されていないラベルを作成します
HereIsMyWarning:
それを参照しないでください。コンパイル中に、次のような警告が表示されます
1>..\Example.c(71) : warning C4102: 'HereIsMyWarning' : unreferenced label
そのためにerror
ディレクティブを使用できます。 DEBUG
が定義されていない場合、次のコードはコンパイル時にエラーをスローします。
#ifndef DEBUG
#error This is an error message
#endif
単にエラーを報告したい場合:
#ifdef RELEASE
#error Release mode not allowed
#endif
ほとんどのコンパイラで動作します。
GCCおよびClang(およびおそらく_Pragma機能をサポートするすべてのコンパイラ)の場合、マクロを定義できます。
#if ! DEBUG
#define FIX_FOR_RELEASE(statement) _Pragma ("GCC error \"Must be fixed for release version\"")
#else
#define FIX_FOR_RELEASE(statement) statement
#endif
このマクロは一時的なハックに使用できます。たとえば、同僚がまだ書いていないコードを回避したり、ビルドを公開したいときに修正することを忘れないようにすることができます。どちらか
FIX_FOR_RELEASE()
// Code that must be removed or fixed before you can release
または
FIX_FOR_RELEASE(statement that must be removed or fixed before you can release);
Code :: Blocksでは、リリースモードが必要ない場合は、リリースモードを削除できます。これを行うには、[プロジェクト]メニューをクリックして[プロパティ...]を選択し、[ビルドターゲット]タブで[リリース]をクリックしてから[削除]ボタンをクリックします。リリースモードを削除すると、現在のプロジェクトに対してのみ実行されるため、他のプロジェクトでも使用できます。
それ以外の場合、プリプロセッサを本当に使用したい場合、これを行うことができます:
#ifdef RELEASE
#error "You have to use the Debug mode"
#endif