C語言的預處理之"條件編譯"
阿新 • • 發佈:2018-12-21
C語言的預處理主要有三個方面的內容:
- 巨集定義
- 檔案包含
- 條件編譯
預處理命令以符號"#"開頭。
採用條件編譯,可以減少被編譯的語句,從而減少目標的長度。當條件編譯段比較多時,目標程式長度可以大大減少。
條件編譯主要包括:
#if 編譯預處理的條件命令,相當於C語言中的if語句
#ifdef 判斷某個巨集是否被定義,如果已經定義,執行隨後的語句
#ifndef 與 #ifdef 相反,判斷某個巨集是否未被定義
#elif 若 #if , #ifdef , #ifndef 或前面的 #elif 條件不滿足,則執行 #elif 之後的語句,相當於C語法中的 else-if
#else 與 #if , #ifdef , #ifndef 對應, 若這些條件不滿足,則執行 #else 之後的語句,相當於C語法中的 else
#endif #if , #ifdef , #ifndef 這些條件命令的結束標誌.
defined 與 #if, #elif 配合使用,判斷某個巨集是否被定義
應用舉例:
#if 可支援同時判斷多個巨集的存在,與常量表達式配合使用。常用格式如下:
條件編譯中相對常用的預編譯指令。模式如下:
在判斷某個巨集是否被定義時,應當避免使用 #if ,因為該巨集的值可能就是被定義為0。而應當使用 #ifdef 或 #ifndef 。