編譯預處理

2021-10-04 19:16:13 字數 3460 閱讀 7189

乙個大程式,通常分為多個模組,並由多個程式設計師分別程式設計。

有了檔案包含處理功能,就可以將各個模組的資料(如符號常量和資料結構)或函式,集中到乙個單獨的標頭檔案中。

這樣,只要將所需檔案包含進來,即可使用其中資料或呼叫其中函式,不必再重複定義它們,從而減少重複勞動

標頭檔案只要是文字檔案,檔名的字尾可以是任何合法的字尾名

當源程式中包含標頭檔案時,可以對其中包含的標頭檔案進行修改,但修改後必須對該源程式重新進行編譯連線

巨集命令行不是c語句

#include

《包含該庫函式的標頭檔案》

每乙個以#開頭的行稱為編譯預處理行

將stdio.h嵌入該行為作為源程式的一部分

輸出格式符:

%c :

char

%s : 字串 char

*%d : int

(十進位制)

%o : int

(八進位制)

%x : int

(十六進製制)

%u : int

(不帶符號十進位制)

%f : float

%lf :

double

%e: float

,double(指數形式)

其他:寬度限定(在%後加數字)

左對齊格式符(在%和數字之間加『-』)

#include

⒈ 余弦函式double cos(double x)

⒉ 正切函式double tan(double x)

⒊ 反余弦函式double acos(double x)

⒋ 平方根函式double sqrt(double x)

⒌ 指數函式double pow(double x,double y)

⒍ e的指數函式double exp(double x)

⒎ 絕對值函式double fabs(double x)

⒏ 以e為底的對數函式double log(double x)

⒐ 以10為底的對數函式double log10(double x)

c character classification functions

#include

⒈ 檢查字母、數字字元函式int isalnum(char)

isalnum(』\x20』) 為0,isalnum(』a』) 為非0;

⒉ 檢查字母函式int isalpha(char)

若為英文本母,返回非0(小寫字母為2,大寫字母為1)

若不是字母,返回0。

⒊ 檢查數字字元函式int isdigit(char)

⒋ 檢查可列印字元函式int isgraph(char)

⒌ 檢查小寫字母函式int islower(char)

小寫字元轉換大寫字元函式char toupper(char)

#include

1.隨機數發生器函式int rand( void )

2.初始化隨機數發生器函式voidsrand(unsigned)

3.終止程式執行函式void exit(int a)

乙個c程式由乙個或多個函式組成 必須包含main()函式

#define pi 3.1415926

/*pi的作用域*/

#undef pi

巨集定義tip:

「pi」 (無引號)

p i (無空格)

最好用capital letter

#define

《名字》 《值》

在c語言的編譯器開始編譯之前,編譯預處理程式(cpp)會把程式中的名字換成值

不占用執行時間

如果乙個巨集的值超過一行,最後一行之前的行末需要加

巨集值後面出現的注釋不會被當作巨集的值的一部分

#define _debug沒有值的巨集

這類巨集是用於條件編譯的,後面有其他的編譯預處理指令來檢查這個巨集是否已經被定義過了

預定義的巨集

__line__行數

__file__檔名

__date__日期

__time__時間

__stdc__

#include

#include

intmain()

#define cube(x) ((x*(x)*(x))

括號問題

在替換帶引數的巨集命,圓括號必不可少

#include

#define radtodeg1(x) (x*57.29578)

#define radtodeg2(x) (x)*57.29578

intmain

(int argc,

char

const

* ar**)

執行實況	(5

+2*57.29578

)180/(

1)*57.29578

正確寫法

#define radtodeg(x) ((x)*57.29578)

帶引數的巨集

#define min(a,b) ((a)>(b)?(b):(a))

也可以組合(巢狀)使用其他巨集

分號?

#include

#define pretty_print(msg) printf(msg)

intmain()

}

編譯預處理

所謂編譯預處理,就是在c源程式的編譯之前,由編譯預處理程式對這些編譯預處理命令進行處理的過程。最常見的就是常量的替換。編譯預處理按功能可以分為巨集定義,檔案包含和條件編譯三類。編譯預處理命令以 開頭,下面進行詳細說明 一.巨集定義與符號常量 1.無參巨集定義 define 識別符號 字串 1 巨集名...

編譯預處理

1.巨集定義指令 1 定義變數與命令 避免幻數 在巨集定義命名時,盡量能清楚的表明功能,大寫 不能以 開頭易與內建巨集衝突 2 定義巨集函式 define max a,b a b a b int num max 6,5 6 5 6 5 用編譯時間換記憶體空間的是巨集函式 用記憶體空間換執行空間的是內...

編譯預處理

1 定義常量與命令 避免幻數 定義巨集時,避免以 開頭,以防與內建巨集定義衝突。巨集和列舉的區別 a.列舉常量是實體常量中的一種,但巨集不是實體 b.列舉常量屬於常量,但巨集不是常量 c.列舉常量具有型別,但巨集沒有型別。列舉型別主要用於限制性輸入,巨集只是預處理替換符 d.列舉只可以表示整型,巨集...