if defined 與 ifdef的區別

2021-08-04 18:14:35 字數 493 閱讀 5686

在linux中,常常使用巨集編譯的方法來進行條件編譯,通過巨集的定義與否來選擇執行對應的**。

一般而言,使用的比較頻繁的兩種方法是

(1)、#if   defined  (***)

#endif

(2)、#ifdef

#endif

這兩個都可以通過巨集開關來控制程式的執行與否,但第一種更加靈活一些,其可以進行多個條件的判斷。如下:

# include

#define aaa

#define bbb

#define ccc

int main()

程式的結果如下:

aaa is defined

bbb is define

aaa and bbb are defined

可知,如果條件比較複雜,#if defined 比#ifdef更適合(與之類似的是#if !defined)。

而#if一般要求引數為一定的數值,無法使用巨集來判定。

ifdef 如何實現「與或」

原本用巨集定義包起來的 類似如下 ifdef a endif a 現在要加入乙個巨集定義 b,實現類似這樣的條件判斷 顯然實際上這樣是不行的 ifdef a ifdef b 其實應該這樣 if defined a defined b endif 或 的形式是 if defined a defined...

ifdef 如何實現「與或」

原本用巨集定義包起來的 類似如下 cpp view plain copy print?ifdef a endif a 現在要加入乙個巨集定義 b,實現類似這樣的條件判斷 顯然實際上這樣是不行的 cpp view plain copy print?ifdef a ifdef b 其實應該這樣 cpp ...

ifdef 如何實現「與或」

用巨集定義包起來的 類似如下 ifdef a endif a現在要加入乙個巨集定義 b,實現類似這樣的條件判斷 顯然實際上這樣是不行的 ifdef a ifdef b其實應該這樣 if defined a defined b endif 或 的形式是 if defined a defined b e...