基本你概念
- 條件編譯是預編譯提示命令,用於控制是否編譯某段代碼
本質
- 預編譯器根據條件編譯指令有選擇的刪除代碼
- 編譯器不知道代碼分支的存在
- if…else…語句在運行期進行分支判斷
- 條件編譯指令在預編譯期進行分支判斷
可以通過命令行定義宏
(1) gcc -D宏名=Value file.c (2) gcc -D宏名 file.c
.#include的本質
- 將已經存在的文件內容嵌入到當前文件中
- 間接包含同樣會產生嵌入文件的操作
間接包含同一個頭文件會產生重複包含的問題,條件編譯可以解決這個問題
#ifndef _HEADER_FILE_H #define _HEADER_FILE_H //source code #endif
意義
- 條件編譯使得我們按不同的條件編譯不同的代碼段,從而產生不同的目標代碼
- #if…#else…#endif被預編譯器處理,而if…else…語句被編譯器處理,必然編譯進目標代碼
- 實際工程條件編譯的應用:
- 不同產品線共用一份代碼
- 區分編譯產品的調試版和發佈版