1.基本概念
條件編譯的行為類似於c語言中的if…else…;
條件編譯是預編譯指示命令,用於控制是否編譯某段**;
可以利用預處理器調整**、刪除**的操作。
2.程式設計實驗
條件編譯初探
//#include
#define c 1
int main()
編譯器處理後的**為:
int main()
執行結果:
總結:#if…#else…:用來告訴預處理器保留哪一部分**,刪除哪一部分**。
3.條件編譯的本質
預編譯器根據條件編譯指令有選擇的刪除**
編譯器不知道**分支的存在
if. … else … 語句在執行期進行分支判斷
條件編譯指令在預編譯期進行分支判斷
可以通過命令列定義巨集 :gcc -dmacro=value file.c 或 gcc -dmacro file.c
4.程式設計實驗
通過命令列定義巨集
方式一#include
int main()
單步編譯:gcc -dc=1 -e test2.c -o test2.i
# 1 「test2.c」
int main()
方式二:
#include
int main()
5.#include的本質
#include的本質是將已經存在的檔案內容嵌入到當前檔案中
#include的間接包含同樣會產生嵌入檔案內容的操作
條件編譯可以解決標頭檔案重複包含的編譯錯誤
#include header_file_h
#define heander_file_h
// source code
#endif
6.條件編譯的意義
條件編譯使得我們可以按照不同的條件編譯不同的**段,因而可以產生不同的目標**
#if…#else…#endif被預編譯器處理,if…else…語句被編譯器處理,必然被編譯進目標**
實際工程中條件編譯主要用於以下兩種情況:
不同的產品線公用乙份**
區分編譯產品的除錯版和發布版
7.程式設計實驗
產品線區分及除錯**應用
product.h
#define debug 1 // 除錯版
#define high 1 // 高階產品
product.c
#include
#include 「product.h」
#if debug
#define log(s) printf("[%s:%d] %s\n",file,line, s)
#else
#define log(s) null
#endif
#if high
void f()
#else
void f()
#endif
int main()
執行結果:
8.小結
22 條件編譯使用分析
條件編譯的意義 乙份 支援多種產品版本切換 條件編譯的本質 條件編譯時預編譯指示命令用於控制是否編譯某段 define c 1 if c 1 printf this is first printf n else printf this is second printf n endif 預編譯器根據條...
C語言 (1) 條件編譯
第一種形式 解釋 如果識別符號被 define語句定義過,則編譯程式段1 否則編譯程式段2 incelud define num ok int main ifdef num printf hello world else printf hello china endif return o 因為已經定...
C語言 09條件編譯
條件編譯的概念 通常我們希望程式的其中一部分 只有在滿足一定的情況下才進行編譯,否則不參與編譯,只有參與編譯的 最終才能被執行 這就是條件編譯 基本用法 if condication01 code01.elif condication02 code02.else code03.endif 1 inc...