C語言之預處理

2021-06-27 14:35:09 字數 1541 閱讀 8891

預處理指令:

在**編譯(0和1

)之前執行的指令叫預處理指令。

所有的預處理指令都是以#

開頭。

預處理的位置是隨便寫的

預處理指令的作用域:從編寫指令的那一行開始一直到檔案結尾

#undef 巨集名   從這行**開始,巨集失效

巨集名一般用大寫(或者在巨集名前加「k」,

代表常量),變數名一般用小寫

一、巨集定義

格式:#define 

巨集名 值

#define count 5  //在**編譯前把所有的count都換成5,除了字串

int main()

; //陣列長度值只能用常量或者巨集

for(int i=0; i二、帶引數的巨集定義

帶引數的巨集定義效率比函式高

#define sum(v1, v2) ((1)+(v2)) //v1+v2應該加括號,否則會出現運算順序問題,因為巨集定義在執行時,只作文本替換,不管運算順序

#define pingfang(a) ((a)*(a)) //應該把a括上,同樣會出現運算順序的問題

int main()

三、條件編譯

在很多情況下,我們希望程式的其中一部分**只有在滿足一定條件時才進行編譯,否則不參與編譯(只有參與編譯的**最終才能被執行),這就是條件編譯。

只要寫了#if

,在最後面必須加上

#endif

第一種:

#if 條件1

...code1...

#elif 條件2

...code2...

#else

...code3...

#endif

#define a 10

int main()

第二種:

#if defined(max)  //如果定義了

max這個巨集

...code...

#endif

#if !defined(max)  //如果沒有定義

max這個巨集

...code...

#endif

//同上

#ifdef max

...code...

#endif

#ifndef max

...max...

#endif

四、檔案包含

1.<>表示系統自帶的檔案,

""表示自定義的檔案

2.不允許 迴圈包含,比如a.h

包含b.h

,b.h

包含a.h

開發中常常出現多次重複包含同一標頭檔案的情況,這樣會降低編譯效率,為了防止這一情況,可以再標頭檔案中定義條件編譯:

test.h

#ifndef test.h  //這個巨集通常定義為大寫的檔名,定義為空即可,防止不同的標頭檔案定義相同的巨集

#define test.h

函式宣告code

#endif

C語言之預處理

預處理是c語言 也包括oc 的一部分,它們是一些特殊的命令.在編譯器對c程式 或者 oc程式 進行編譯之前,編譯器會對這些預處理命令進行處理,然後將這些處理的結構與源程式一起進行編譯.預處理命令有如下特徵.1 預處理命令必須以 號開頭 2 預處理通常位於程式的開頭部分 下面一起來看一下幾種使用情況 ...

c語言之預處理命令

c提供的預處理功能有 巨集定義檔案包含 條件編譯 為了與其她c語句區分,命令經常以符號 開頭。define 識別符號 字串 可以避免反覆輸入字串,後面不加 巨集定義在預設時的有效範圍是全部。也可以用 undef終止巨集定義區域。不含引數 巨集展開帶入程式 含引數 define s a,b a b i...

c語言之預處理指令

c語言的預處理指令 有 巨集定義 檔案包含 條件編譯 巨集定義分為兩類 1 不帶引數的巨集定義 2 帶引數的巨集定義 巨集定義的格式 一般形式 define 巨集名 字串 作用 在編譯預處理的時候,將巨集名替換成右邊的字串 注意 巨集名一般大寫字母 巨集名在編譯預處理的時候不做編譯檢查,只做巨集名字...