由ansi的標準規定, 預處理指令主要包括:
#define
#error
#if
#else
#elif
#endif
#ifdef
#ifndef
#undef
#line
#pragma
由上述指令可以看出, 每個預處理指令均帶有符號"#"。下面只介紹一些常用指令。
1. #define 指令
#define指令是乙個巨集定義指令, 定義的一般形式是:
#define 巨集替換名字串(或數值)
由#define指令定義後, 在程式中每次遇到該巨集替換名時就用所定義的字串(或數值)代替它。
例如: 可用下面語句定義true表示數值1, false表示0。
#define true 1
#define false 0
一旦在源程式中使用了true和false, 編譯時會自動的用1和0代替。
注意:
1. 在巨集定義語名後沒有";"
2. 在turbo c程式中習慣上用大寫字元作為巨集替換名, 而且常放在程式開頭。
3. 巨集定義還有乙個特點, 就是巨集替換名可以帶有形式引數, 在程式中用到時, 實際引數會代替這些形式引數。
例如:
#define max(x, y) (x>y)?x:y
main()
上例巨集定義語句的含義是用巨集替換名max(x, y)代替x, y中較大者, 同樣也可定義:
#define min(x, y) (x2. #error指令
該指令用於程式的除錯, 當編譯中遇到#error指令就停止編譯。其一般形式為:
#error 出錯資訊
出錯資訊不加引號, 當編譯器遇到這個指令時, 顯示下列資訊並停止編譯。
fatal: filename linename error directive
3. #include 指令
#include 指令的作用是指示編譯器將該指令所指出的另乙個原始檔嵌入#include指令所在的程式中, 檔案應使用雙引號或尖括號括來。turbo c 庫函式的標頭檔案一般用#include指令在程式開關說明。
例如:
#include
程式也允許嵌入其它檔案, 例如:
main()
其中help.c為另乙個檔案, 內容可為
printf("glad to meet you here!");
上例編譯時將按整合開發環境的options/directories/include directories中指定的包含檔案路徑查詢被嵌入檔案。
4. #if、#else、#endif指令
#if、#els和#endif指令為條件編擇指令, 它的一般形式為:
#if 常數表示式
語句段;
#else
語句段;
#endif
上述結構的含義是: 若#if指令後的常數表示式為真, 則編譯#if到#else之間的程式段; 否則編譯#else到#endif之間的程式段。
例如:
#define max 200
main()
5. #undef指令
#undef指令用來刪除事先定義的巨集定義, 其一般形式為:
#undef 巨集替換名
例如:
#define true 1
...
#undef ture
#undef主要用來使巨集替換名只限定在需要使用它們的程式段中
6.#pragma
C C 預處理指令
預處理指令是以 號開頭的 行。號必須是該行除了任何空白字元外的第乙個字元。後是指令關鍵字,在關鍵字和 號之間允許存在任意個數的空白字元。整行語句構成了一條預處理指令,該指令將在編譯器進行編譯之前對源 做某些轉換。1.和 1 define pi 3.1415926 2 define paste n a...
C C 預處理指令
預處理指令 preprocessor directives define undef ifdef ifndef if endif else and elif line error include 預定義識別符號 pragma 預處理指令是我們寫在程式 中的給預處理器 preprocessor 的命令...
C C 編譯預處理指令
眾所周知,你的程式編譯前要做的事就是掃瞄源 對其做初步的轉換,產生新的源 提供給編譯器,這個過程就叫編譯預處理。這個處理過程由預處理器來完成,預處理器是在程式真正執行前由編譯器呼叫的預處理程式。常見的預處理有以下三種 include 是一種最為常見的預處理,主要是做為檔案的引用組合源程式正文。巨集替...