C語言基礎(十) 預處理

2021-07-25 13:55:27 字數 1306 閱讀 1303

預處理就是在編譯之前所做的事情,所以也叫預編譯,主要有巨集定義、檔案包含處理和條件編譯。

巨集定義指令是指用乙個指定的識別符號代表乙個字串,可以減少程式中重複書寫某些字串的工作量,使用巨集可以達到「一改全改」的**規範。

巨集定義主要分為不帶引數的巨集定義 和 帶引數的巨集定義。

//不帶引數的巨集定義

# define n 10

# define pi 3.14

# define r 2*n*n

//帶引數的巨集定義

# define s(a,b) a*b //程式中出現的s(a,b)與a*b等價

/*** 巨集定義測試

*/# include

# define pi 3.14

# define circle(r,l,s) l=2*pi*r;s=pi*r*r;

int main()

//正常情況下巨集的作用範圍從定義開始到檔案結束

//使用#undef命令可以提前取消巨集定義

# undef n

# undef pi

# undef circle(r,l,s)

檔案包含處理的說明:

ctype.h     包含測試字元的函式

local.h 包含地區化的函式

math.h 包含數學函式

string.h 包含字串函式

stdio.h 包含標準輸入輸出函式

stdlib.h 包含常用的系統函式

time.h 包含時間和日期函式

signal.h 包含訊號有關的函式

malloc.h 包含動態記憶體函式

/**

* 測試 #ifdef/#ifndef

*/# define chinese 1

# ifdef chinese

# include "chinese.h"

# else

# include "english.h"

# endif

int main()

/*** 測試 #if

*/# include

# define letter 1

int main()

#else

if (c>='a' && c<='z')

#endif

printf("%c", c);

}printf("\n");

return

0;}

C語言基礎(十) 預處理

標頭檔案包含 條件編譯 作用 文字替換 提高 的可讀性 示例 1 define pi 3.1415926帶參巨集沒有引數型別 也沒有返回值型別 可以接受任意型別的引數 本質是替換 沒有任何檢查 示例 2 define add a,b a b在示例 2 中需要考慮優先順序問題 include defi...

C語言基礎 預處理

預處理 1.c語言在對源程式進行編譯之前,會先對一些特殊的預處理指令作解釋 比如之前使用的 include檔案包含指令 產生乙個新的源程式 這個過程稱為編譯預處理 之後再進行通常的編譯 2.為了區分預處理指令和一般的c語句,所有預處理指令都以符號 開頭,並且結尾不用分號 3.預處理指令可以出現在程式...

C語言基礎 預處理

預處理 預處理命令是由ansi c統一規定的,但是它們不是c語言本身的組成部分,不能直接對它們進行編譯 因為編譯程式不能識別它們 必須在對程式進行通常的編譯 包括詞法和語法分析 生成 優化等 之前,先對程式中這些特殊的命令進行 預處理 即根據預處理命令對程式作相應的處理 例如,若程式中用 defin...