1. 程式人生 > >C語言的預處理之"條件編譯"

C語言的預處理之"條件編譯"

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 。