由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主要用來使巨集替換名只限定在需要使用它們的程式段中。
預處理指令
預處理指令是我們寫在程式 中的給預處理器 preprocessor 的 命令,而不是程式本身的語句。預處理器在我們編譯乙個c 程式時由編譯器自動執行,它負責控制對程式 的第一次驗證和消化。所有這些指令必須寫在單獨的一行中,它們不需要加結尾的分號 在這個教程的開頭我們已經提到了一種預處理指令 defi...
預處理指令
1.人們常常稱機器語言為目標 object code 2.預處理命令 preprocessor directives 三種預處理包括 巨集定義 檔案包含 條件編譯。在對源程式編譯之前,會對程式中的所有預處理指令進行處理。預處理就是在進行編譯的第一遍詞法掃瞄和語法分析之前所作的工作。說白了,就是對原始...
預處理指令
普通 define 巨集名 字串 define my int int define max 10000 帶引數 define 巨集名 形參 字串 define add x,y x y 在大規模的開發過程中,特別是跨平台和系統的軟體裡,條件編譯很重要。include using namespace s...