1.1 宏定義(不帶參數的宏定義,帶參數的宏定義)
1.編譯預處理就是對C源程序進行編譯前,由″編譯預處理程序″對預處理命令行進行處理的過程。
2.C語言中,凡是以″#″開頭的行,都稱爲″編譯預處理″命令行。C語言中的編譯預處命令有:#define,#undef,#include,#if,#else,#elif,#endif,#ifdef,#ifndef,#line,#pragma,#error。這些預處理命令組成的預處理命令行必須在一行的開頭以″#″號開始,每行的未尾不得加″;″號,以區別於C語句、定義和說明語句。
3.不帶參數的宏定義:命令的一般形式爲:
#define 標識符 字符串
定義中的″標識符″爲用戶定義的標識符,稱爲宏名。在預編譯時,C預編譯程序將出現的宏名替換成″字符串″的內容,這一過程也稱爲宏展開。
4.帶參數的宏定義:命令的一般形式爲
#define宏名(形式參數) 字符串
定義中的″字符串″應包含括號中所指定的`形式參數。注意宏名與括號之間不要加空格,否則就成爲不帶參數的宏定義了。
5.預編譯時,遇到帶實參的宏名,則按命令行中指定的字符串從左到右進行置換,原則是:遇到實參則以實參代替,非形參字符原樣保留,從而成展開後的內容。
1.2 “文件包含”處理
1.文件包含的一般形式爲:
#include″頭文件名″
#include
頭文件名一般由C語言提供,也可以是用戶自己編寫的,頭文件通常用.h作爲後綴。
2.當頭文件名用雙引號括起來時,系統首先在使用此命令的文件所在的目錄中查找被包含的文件,找不到時,再按系統指定的標準方式檢索其它目錄;當頭文件名用尖括號括起來時,則直接按系統指定的標準檢索方式查找被包含的文件。
3.預編譯時,將被包含文件的內容全部複製到包含文件中,這就是文件″包含處理″。
1.3 條件編譯
C語言中的條件編譯命令可對源程序代碼的各部分有選擇地進行編譯。條件編譯主要有如下3種使用格式:
使用格式1:
#ifdef標識符
程序段1
#else
程序段2
#endif
使用格式2:
#ifndef標識符
程序段1
#else
程序段2
#endif
使用格式3:
#if表達式
程序段1
#else
程序段2
#endif
使用格式1表示如果已定義了“標識符”,則編譯“程序段1”,否則編譯“程序段2”;使用格式2表示如沒有定義了“標識符”,則編譯“程序段1”,否則編譯“程序段2”;使用格式3表示如“表達式”的值爲“真”時,則編譯“程序段1”,否則編譯“程序段2”。