Translate

2014年8月31日日曜日

プリプロセッサディレクティブ

#ifディレクティブに DEBUG をつけると、DEBUG用にビルドされた物を実行する時のみ実行される
using System.Windows.Forms;

namespace SampleCode {
    class Program {
        static void Main(string[] args) {

#if DEBUG
            MessageBox.Show("DEBUG");
#else
            MessageBox.Show("RELEASE");
#endif
            
        }
    }
}
DEBUGがあるならRELEASEもあるのかと思ったらそれはないのでelseで分岐する


同様のことは、System.Diagnostics.Conditional("DEBUG")でも実現でき
メソッド単位に使用する。この場合Release用にコンパイルされる側では
条件付きメソッドの呼び出しは削除されるそうな。
using System.Windows.Forms;

namespace ConsoleApp {
    class Program {
        static void Main(string[] args) {
            ShowMessage("DEBUGの時のみ実行");  
        }

        [System.Diagnostics.Conditional("DEBUG")]
        static void ShowMessage(string str) {
            MessageBox.Show(str);
        }
    }
}

0 件のコメント: