ifdef 如何實現「與或」

2021-07-03 01:28:49 字數 850 閱讀 4931

原本用巨集定義包起來的**類似如下:

[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...