C語言預處理指令總結
阿新 • • 發佈:2022-05-06
預處理指令是以#號開頭的程式碼行,# 號必須是該行除了任何空白字元外的第一個字元。# 後是指令關鍵字,在關鍵字和 # 號之間允許存在任意個數的空白字元,整行語句構成了一條預處理指令,該指令將在編譯器進行編譯之前對原始碼做某些轉換。
下面是本章涉及到的部分預處理指令:
指令 | 說明 |
---|---|
# | 空指令,無任何效果 |
#include | 包含一個原始碼檔案 |
#define | 定義巨集 |
#undef | 取消已定義的巨集 |
#if | 如果給定條件為真,則編譯下面程式碼 |
#ifdef | 如果巨集已經定義,則編譯下面程式碼 |
#ifndef | 如果巨集沒有定義,則編譯下面程式碼 |
#elif | 如果前面的#if給定條件不為真,當前條件為真,則編譯下面程式碼 |
#endif | 結束一個#if……#else條件編譯塊 |
預處理功能是C語言特有的功能,它是在對源程式正式編譯前由預處理程式完成的,程式設計師在程式中用預處理命令來呼叫這些功能。
巨集定義可以帶有引數,巨集呼叫時是以實參代換形參,而不是“值傳送”。
為了避免巨集代換時發生錯誤,巨集定義中的字串應加括號,字串中出現的形式引數兩邊也應加括號。
檔案包含是預處理的一個重要功能,它可用來把多個原始檔連線成一個原始檔進行編譯,結果將生成一個目標檔案。
條件編譯允許只編譯源程式中滿足條件的程式段,使生成的目標程式較短,從而減少了記憶體的開銷並提高了程式的效率。
使用預處理功能便於程式的修改、閱讀、移植和除錯,也便於實現模組化程式設計。