在C/C++,你可以這樣做:在C#中編譯時間檢查條件編譯符號(請參閱示例)?
#define IN_USE (1)
#define NOT_IN_USE (-1)
#define USING(system) (1/(system) == 1/IN_USE)
然後:
#define MY_SYSTEM IN_USE
#if USING(MY_SYSTEM)
<my_system impl>
#endif
這種類型的設置意味着:
所有條件編譯符號必須定義IN_USE或NOT_IN_USE。
我可以將它們全部放在一個頭文件(或一對)中,並輕鬆地打開/關閉它們,看看有什麼條件編譯符號。
類似#if USING(MYSYSTEM)的錯字由編譯器捕獲,由於div爲0而不是靜靜地編譯出來。
是否有可能在C#中做到這一點?是否有另一種最佳實踐方式來實現相同的效果?
我知道在C#中,你可以通過在項目設置中設置它們,並使用#如果做條件編譯,但我不喜歡的事實,事情沒有被明確定義。這是您在項目設置中有「DEBUG」和「TRACE」複選框的原因。如果他們不在那裏,你不知道你可以打開它們。
它也看起來像他正在尋找C++宏類型的能力。儘管如此,我想不出一種實現解決方法的方法。 – Oded 2010-09-27 18:46:57
是的,這是我一直在做的。但是,我想解決的主要問題是我錯誤地鍵入「#if DEBG」而不是「#if DEBUG」的情況。 很高興能看到所有可能的條件編譯符號的使用與否。 – 2010-09-27 18:49:10