條件編譯的行為類似於c語言中的if...else..根據條件來確定是否進行相關編譯,
要知道條件編譯是預編譯指示命令,在進行編譯已經選擇要編譯內容,及根據選擇編譯某段**
預編譯器根據條件編譯指令有選擇的刪除**,編譯器不知道**分支的存在
可以通過命令列定義巨集:
gcc -dmacro=value file.c
orgcc -dmacro file.c
#include的本質是將已經存在的檔案內容嵌入到當前檔案中,間接包含也會產生嵌入檔案內容的操作
通過條件編譯可以解決標頭檔案重複包含的編譯錯誤,這也是大多說編寫標頭檔案時候的固定格式
例子:
常用的幾個條件編譯:
//#if 條件編譯
//一般用於產品各個版本的語言包
#include#include//#都是預處理指令,條件表示式必須在預處理裡面
//所以條件表示式必須是巨集表示式
//雙分支條件編譯
//#if 條件表示式
//**段1
//#else
//**段2
//#endif
//#endif結束條件編譯
//#if,#else和c語言裡的if else功能一樣,但是時間開銷不一樣
//if else會編譯所有的**,原始碼會較長,編譯時間會較長
//程式體積大,占用更多記憶體,執行時間長
//#if,#else只編譯符合條件的語句,有效減少被編譯的語句,
//縮短原始碼長度,縮短程式執行時間
//多分支條件編譯
//#if 條件表示式1
//**段1
//#elif 條件表示式2
//**段2
//#elif 條件表示式3
//**段3
//#elif 條件表示式4
//**段4
//#else
//**段5
//#endif
//檢測巨集是否定義
//#ifdef 巨集定義
//**段1
//#endif
//#ifdef m 檢測m這個巨集是否定義,定義了就執行**段1,沒有定義就不執行任何操作
//#ifdef一般用於開啟某個功能
//檢測巨集是否未定義
//#ifndef 巨集定義
//**段1
//#endif
//#ifndef m 檢測m這個巨集是否未定義,沒有定義就執行**段1,定義就不執行任何操作
//#ifndef一般用於開啟某個功能或者include 重包含排錯
//例如
//#ifndef opens
//#define opens
定義函式或者執行操作,這樣就不可能重複的定義函式或者操作了,因為如果已經定義了就不會執行這段**
//#endif
#define langua 'd'
void main()
22 條件編譯使用分析
條件編譯的意義 乙份 支援多種產品版本切換 條件編譯的本質 條件編譯時預編譯指示命令用於控制是否編譯某段 define c 1 if c 1 printf this is first printf n else printf this is second printf n endif 預編譯器根據條...
3 2 條件編譯的使用分析
1 條件編譯的行為類似於c語言中的if.else 條件編譯是預編譯指示命令,用於控制是否編譯某段 2 條件預編譯技術 ifndef con h 和標頭檔案一樣 define con h endif 3 條件編譯的意義 1 條件編譯使得我們可以按不同的條件編譯不同的 段,因而可以產生不同的目標 2 i...
14 條件編譯
巨集操作符包括 和 這兩個操作符都是對巨集不代表數字的引數進行 處理的 操作符可以把乙個引數轉換成字串字面值 在引數前後各加乙個 操作符可以把乙個代表識別符號的引數和其他內容 合併得到乙個新識別符號 條件編譯可以在編譯的時候決定哪些語句需要編譯 哪些語句不需要編譯 條件編譯是使用預處理指令實現的 i...