33 預處理指令

2021-07-27 12:07:15 字數 1672 閱讀 5767

編譯工具在對程式進行編譯之前,先對**中的預處理指令進行處理,並根據處理的結果控制**檔案的編譯處理,得到相應的目標**。

1、嵌入指令#include

嵌入指令#include指編譯環境將乙個 c或c++檔案嵌入到當前位置中,並對包括嵌入部分在內的**進行編譯鏈結。

使用#include指令有兩種方式

#include 《要嵌入檔名》

2、巨集定義指令#define

#define 指令用於定義巨集,例如圓周率3.1415926,在編寫**時,用乙個符號代替這一串數字,如 pi,在使用時比較簡潔,其意義也十分清楚。

巨集定義其實就是用一些比較容易理解或具有物理意義的符號代替另一些資料或文字,這些容易理解或具有物理意義的符號被稱為巨集。

#define使用形式:

#define 巨集名 被替換文字  

//定義巨集表示**行

#include

#define prt printf("\n") //定義巨集prt代替輸出回車換行符的**

void main()

帶引數的巨集定義格式如下:

#define 巨集名(引數) 代替文字

例: #define x(y) y*2

#define max(x,y) x>y?x:y

3、取消巨集定義#undef

#undef 與 #define作用相反,#undef用於刪除原有的巨集定義,使用格式如下:

#undef 巨集名

4、條件編譯#if…#endif

#if…#endif指令用於測試乙個或多個符號的值是否為0,如果被測試的符號表示式的值為0,則指令#if…#endif之間的**將被忽略,不被編譯;如果被測試的符號表示式的值不為0,則編譯#if和#endif之間的**。

#if…#endif條件編譯指令的使用格式如下:

#if 符號表示式

// **塊

#endif

多種條件下的編譯,需要使用#if…#elif…else…#endif,格式:

#if 條件表示式

// **塊

#elif 條件表示式

// **塊

#else 條件表示式

// **塊

#endif

5、檢驗巨集定義#ifdef…#ifndef

指令#ifdef 和指令#ifndef用於檢驗是否已經定義指定的巨集,使用格式如下:

#ifdef 巨集名

//**

#endif

該指令功能是如果已經定義過指定的巨集,則將#ifdef和#endif之間的**編譯到可執行檔案中。

#ifndef 巨集名

//**

#endif

該指令功能是如果沒有定義過指定的巨集,則將#ifndef和#endif之間的**編譯到可執行檔案中。

6、錯誤處理#ifdef…#ifndef

在程式編譯時碰到預編譯指令#error,將停止程式的編譯並顯示指定的錯誤資訊。使用格式如下:

#error 指定的錯誤資訊  

//錯誤處理

void main()

預處理指令

預處理指令是我們寫在程式 中的給預處理器 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...