條件編譯裏面有判斷語句,比如 #if 、#else 、#elif 及 #endif
它的意思是如果宏條件符合,編譯器就編譯這段代碼,否則,編譯器就忽略這段代碼而不編譯,如
#define A 0 //把A定義為0
#if (A > 1)
printf("A > 1"); //編譯器沒有編譯該語句,該語句不生成匯編代碼
#elif (A == 1)
printf("A == 1"); //編譯器沒有編譯該語句,該語句不生成匯編代碼
#else
printf("A < 1"); //編譯器編譯了這段代碼,且生成了匯編代碼,執行該語句
#endif
而 if 語句則不然,if 是 C 語言中的關鍵字,它根據表達式的計算結果來覺定執行那個語句,它裏面的每個分支都編譯了的, 如
#define A 0
if (A > 1)
printf("A > 1"); //編譯器編譯該語句,但因為A == 0 未執行
else if(A == 1)
printf("A == 1"); //編譯器編譯該語句,但因為A == 0 未執行
else
printf("A < 1"); //編譯器編譯該語句,因為A == 0 故執行
所以 簡單地講,條件編譯是根據 宏條件 選擇性地編譯語句,它是編譯器在編譯代碼時完成的;
條件語句是根據條件表達式選擇性地執行語句,它是在程序運行時進行的。