原本用巨集定義包起來的**類似如下:
[cpp]view plain
copy
print?
#ifdef a
//...
#endif // a
現在要加入乙個巨集定義 b,實現類似這樣的條件判斷(顯然實際上這樣是不行的):
[cpp]view plain
copy
print?
#ifdef a && ifdef b
其實應該這樣:
[cpp]view plain
copy
print?
#if (defined a) && (defined b)
//...
#endif
「或」的形式是:
[cpp]view plain
copy
print?
#if (!defined a) || (!defined b)
//...
#endif
這就修正了之前一直以為的「既生 #ifdef,何生 #if defined」的思維,其實還是有差別的。
而且,多個 #if 的條件可以外面加括號表示。例如
[cpp]view plain
copy
print?
#if ((defined _unicode) && (!defined sa_unicode))
#define sa_unicode
#endif
ifdef 如何實現「與或」
原本用巨集定義包起來的 類似如下 ifdef a endif a 現在要加入乙個巨集定義 b,實現類似這樣的條件判斷 顯然實際上這樣是不行的 ifdef a ifdef b 其實應該這樣 if defined a defined b endif 或 的形式是 if defined a defined...
ifdef 如何實現「與或」
用巨集定義包起來的 類似如下 ifdef a endif a現在要加入乙個巨集定義 b,實現類似這樣的條件判斷 顯然實際上這樣是不行的 ifdef a ifdef b其實應該這樣 if defined a defined b endif 或 的形式是 if defined a defined b e...
if defined 與 ifdef的區別
在linux中,常常使用巨集編譯的方法來進行條件編譯,通過巨集的定義與否來選擇執行對應的 一般而言,使用的比較頻繁的兩種方法是 1 if defined endif 2 ifdef endif 這兩個都可以通過巨集開關來控制程式的執行與否,但第一種更加靈活一些,其可以進行多個條件的判斷。如下 inc...