NO11 條件編譯使用分析

2021-08-22 15:15:54 字數 1575 閱讀 2855

條件編譯的行為類似於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...