#if、#else、#endif、#elif、#ifdef、#ifndef的區別和使用

常用的條件編譯

#if, #elif,#else,#endif,#ifdef、#ifndef

看名字就知道,跟我們平時用的if、elseif、else是 一樣的,不同的是這裏一定要記得 #endif。

#if 條件 1
 代碼 1
#elif 條件 2
 代碼 2
#else
 代碼段 n+1
#endif
  • 意思跟我們平常寫的代碼一樣,如果條件1成立,則編譯代碼1,如果條件二成立,則編譯代碼2,否則編譯代碼3.
  • 預編譯指令中的這裏的條件(表達式)與C語言本身的表達式基本一至如邏輯運算、算術運算、位運算等均可以在預編譯指令中使用。
  • C語言的代碼是先編譯再執行(OC/C++也是),預編譯指令是在編譯之前處理的,通過預編譯進行宏替換、條件選擇代碼段,然後生成最後的待編譯代碼,最後進行編譯。
  • 務必不能忘了#endif。

1.#if的使用

#if 表達式
    代碼
#endif

if的後面接的是表達式,如果表達式成立,那麼就會把代碼編譯進去,(注意:是編譯進去,不是執行)

2.#if defined的使用

#if defined (宏)
    代碼.
#endif

這個#if後面接的是一個宏,意思是前面的宏定義裏面有沒有定義這個宏,如果定義了,編譯器就會編譯中間的代碼,如果沒有定義,那就不會編譯,不管這個宏定義的是什麼東西,對不對等。

#ifdef的使用

ifdef的使用和#if defined()的用法是一樣的。

ifndef又和#if !defined()的用法一樣(取反的意思)。


雖然條件編譯看着很簡單,但是實現起來就比較複雜了,條件多的情況下#if 得套好幾層。。。我用到的目前就這麼多,更加高深的用法以後用到了再研究補充。



轉自簡書
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章