在C語言中有條件編譯指令,常見的有:
#define 定義宏
#undef 取消已定義的宏
#if 如果給定條件為真,則編譯下面代碼
#ifdef 如果宏已經定義,則編譯下面代碼
#ifndef 如果宏沒有定義,則編譯下面代碼
#elif 如果前面的#if給定條件不為真,當前條件為真,則編譯下面代碼,其實就是else if的簡寫
#endif 結束一個#if……#else條件編譯塊
#error 停止編譯並顯示錯誤信息
#if 0....#endif 的例子
#include <stdio.h> int main() { #if 0 printf("this is never here!\n"); #endif printf("#if .....#endif 之間的語句永遠不會被執行!\n"); return 0; }
在涉及到C語言的項目時,可能有人會注意到里面出現了#if 0這樣的語句,既然里面的語句永遠不會被執行,那為什么要留下這樣的代碼呢?
看下面的例子:
#include <stdio.h> int main { /* int a=1; /*int b=2;*/ int c=3; */ return 0; }
這樣的代碼在編譯的時候會出錯,因為/* */ 跟最近的匹配,所以出現了錯誤。使用#if 0 .....#endif 可以用來避免這種錯誤,同時在代碼中留下暫時不用,但可能有價值的代碼。