預處理命令

2021-08-07 08:04:26 字數 1196 閱讀 8597

c語言的預處理指令有三類,一是巨集定義,二是檔案包含,三是條件編譯。預處理命令以符號「#」開頭

1 巨集定義

巨集定義主要是#define,其又分為帶引數定義和不帶引數定義,例子如下

帶引數定義

#define pi 3.14

不帶引數定義

#define st str

在一些標頭檔案定義中常使用

#define example(識別符號)

其把example定義為空值,目的是為了防止標頭檔案被多次包含,雖然可以省略,但是一般不能省略

此外,#undef 可以終止巨集名的定義

巨集展開只是簡單的字串替換,簡單巨集常用於定義常量,巨集沒有型別,也沒有優先順序的概念,使用定義常量主要用於指定陣列長度 #define ayylength 256 ,建議盡量使用const或enum代替巨集定義常量 constint arrlen 256; 。建議不使用巨集定義型別 #define status int 而是用typedef關鍵字 typedef statusint; 。

2 檔案包含

檔案包含就是指頭檔案,如#include 

「reg51.h」等

3 條件編譯

條件編譯指令有:#if、#elif、#else、#ifdef、#ifndef,例子如下:

#define urmd 0

#if urmd == 0

程式塊1

#elif urmd == 1

程式塊 2

#else

程式塊 3

#endif

上述條件編譯例子,是在巨集條件符合時,編譯器就編譯這段**,否則不編譯,它跟不帶「#」的區別就在於一般的條件語句使所有條件的**都會被編譯生成執行**,而預處理條件語句則是只編譯符合條件的那部分**,其它不合條件的不會生成執行**。

因此,一般條件在編譯前就確定了,那麼就使用預處理條件,如果需要在程式執行過程中才能判斷,則使用一般的條件語句

#ifdef  a

程式塊1

#else

程式塊 2

#endif

如果有巨集定義識別符號a,那麼執行程式塊1,否則執行程式塊2,#else部分也可以不用。

#ifndef b

程式塊 1

#else

程式塊 2

#endif

如果沒有巨集定義識別符號b,那麼執行程式塊1,否則執行程式塊2,#else也可以不用。

預處理命令

和 操作符是和 define 巨集使用的.使用 使在 後的首個引數返回為乙個帶引號的字串.例如,命令 define to string s s將會使編譯器把以下命令 cout to string hello world endl 理解為 cout hello world endl 使用 鏈結 前後的...

預處理命令

我們可以在c源程式中插入傳給編譯程式的各中指令,這些指令被稱為預處理器指令,它們擴充了程式設計的環境。現把常用的預處理命令總結如下 1.預處理程式 按照ansi標準的定義,預處理程式應該處理以下指令 if ifdef ifndef else elif endif define undef line ...

預處理命令

ansi c標準規定可以在c源程式中加入一些 預處理命令 來改進程式設計環境,提高程式設計效率。這些預處理指令都是由ansi c統一規定的,但是它並不是c語言本身的組成部分,不能直接對其進行編譯。c語言和其它高階程式語言的乙個重要區別就是可以使用預處理指令和它的預處理功能。預處理是指由預處理程式負責...