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