三、條件編譯指令
條件編譯指令將決定那些代碼被編譯,而哪些是不被編譯的?梢愿鶕(jù)表達(dá)式的值或者某個特定的宏是否被定義來確定編譯條件。
1.#if指令
#if指令檢測跟在制造另關(guān)鍵字后的常量表達(dá)式。如果表達(dá)式為真,則編譯后面的代碼,知道出現(xiàn)#else、#elif或#endif為止;否則就不編譯。
2.#endif指令
#endif用于終止#if預(yù)處理指令。
#define DEBUG 0
main()
{
#if DEBUG
printf(Debugging\n);
#endif
printf(Running\n);
}
由于程序定義DEBUG宏代表0,所以#if條件為假,不編譯后面的代碼直到#endif,所以程序直接輸出Running。
如果去掉#define語句,效果是一樣的。
3.#ifdef和#ifndef
#define DEBUG
main()
{
#ifdef DEBUG
printf(yes\n);
#endif
#ifndef DEBUG
printf(no\n);
#endif
}
#if defined等價于#ifdef; #if !defined等價于#ifndef
4.#else指令
#else指令用于某個#if指令之后,當(dāng)前面的#if指令的條件不為真時,就編譯#else后面的代碼。#endif指令將中指上面的條件塊。
#define DEBUG
main()
{
#ifdef DEBUG
printf(Debugging\n);
#else
printf(Not debugging\n);
#endif
printf(Running\n);
}
相關(guān)推薦:計算機等級考試二級C語言教程匯總北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |