在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 可以用來避免這種錯誤,同時在代碼中留下暫時不用,但可能有價值的代碼。
