概要
仕事でVisualStudioを使ってWindowsフォームアプリを作成しているのですが、ビルド構成をDebugかReleaseかで変数の値を変えて欲しいと言われました。
しかし、パッと解決法が思い付かずどうしたらいいか困ってしまったわけです…
調べた結果、プリプロセッサディレクティブを使った方法が簡単そうじゃん!と思い実装したところめちゃ簡単だったので皆さんに共有させていただきます。
プリプロセッサてそもそも何者?
基本的なことですが、コンピュータがプログラムを実行する前に、一連の手順を踏む必要があります。「コンパイル」という過程です。
「プリプロセッサ」はこのコンパイルが行われる前に動作します。だから「プリ(前の)」と名前についています。プリプロセッサが行う作業は主に「コードの準備」なのです。
よく使われるプリプロセッサディレクティブたち
以下はよく使われるプリプロセッサディレクティブです。
これらを見た上で次の実装例を見てみましょう。
#if : 条件付きコンパイルブロックの開始を示します。
#else : #if または #elif ブロックの代替ブロックを示します。
#elif : #if ブロックの追加の条件を示します。
#endif : 条件付きコンパイルブロックの終了を示します。
#define : シンボルを定義します。
#undef : シンボルの定義を取り消します。
実装例
以下は簡単な実装例ですが、Debugを選択しているとmodeに「Debug Mode」が代入され、Releaseだと「Release mode」が代入されます。
また、実際に実装すると現在選択しているデバッグ構成によってどちらかが無効になります。
つまり、Debugを選択していた場合、#elseブロックは無効となりコードが灰色になります。
string mode;
#if DEBUG
mode = "Debug mode";
#else
mode = "Release mode";
#endif
SomeMethod(mode);
おわりに
以上がプリプロセッサディレクティブを使ったビルド構成によって変数を設定する方法です。
他の方法もありますが設定などが複雑になってくるので、必要でない限りこの方法でやった方が簡単に実装できると思います!
しかし、この方法を使う際は自分でも調べてからやってくださいね!信頼性の高い1次情報が大事です。
私の投稿は参考程度に。