編譯預(yù)處理器是C語(yǔ)言編譯器的一個(gè)重要組成部分。很好的利用C語(yǔ)言的預(yù)處理命令可以增強(qiáng)代碼的可讀性,靈活性,和易于修改等特點(diǎn),便于程序的結(jié)構(gòu)化。 預(yù)處理命令由符號(hào)“#”開頭,包括宏定義,文件包含,條件處理三個(gè)部分。 其中條件編譯我還沒(méi)有用過(guò),所以就詳細(xì)介紹一下宏定義和文件包含。 一.宏定義 宏定義命令為#define,它的作用就是實(shí)現(xiàn)用一個(gè)簡(jiǎn)單易讀的字符串來(lái)代替 另一個(gè)字符串。增加程序的可讀性,和維護(hù)性。 宏定義分為不帶參數(shù)的宏定義,和帶參數(shù)的宏定義。 不帶參的宏定義: 一般格式:#define 標(biāo)識(shí)符 常量表達(dá)式 例如用一個(gè)字符代替一個(gè)常數(shù) #define PI 3.1415926 當(dāng)程序中出現(xiàn)3.1415926這個(gè)常數(shù)的時(shí)候就可以用PI這個(gè)字符代替,如果想修改這個(gè)常數(shù)只需要修改這個(gè)宏定義中的常數(shù),就可以達(dá)到修改整個(gè)文件中這個(gè)常數(shù)的目的。這就是增加維護(hù)性的體現(xiàn)。 使用注意: 使用中#define 和標(biāo)識(shí)符之間必須留有空格,標(biāo)識(shí)符和常量表達(dá)式之間也必須有空格。 帶參數(shù)的宏定義: 帶參數(shù)的宏定義和不帶參數(shù)的宏定義之間的區(qū)別在于,帶參數(shù)的宏定義不只是進(jìn)行字符串的替換,而且還要進(jìn)行參數(shù)的替換。注意是參數(shù)替換。 格式: #define 宏符號(hào)名(參數(shù)表) 表達(dá)式 如: #define MIN(x,y) (((x)51.h的頭文件,而你的源代碼目錄里也有一個(gè)你自己寫的at89c51.h頭文件,那么使用尖括號(hào)時(shí)用的就是系統(tǒng)里的;而使用雙引號(hào)的話則會(huì)使用你自己寫的那個(gè)。 所以建議: 使用系統(tǒng)里提供的頭文件時(shí)使用尖括號(hào) 使用自己編寫的頭文件時(shí)使用雙引號(hào) 典型的頭文件內(nèi)容包括: 1:說(shuō)明文字。用于注釋該頭文件的主要內(nèi)容,函數(shù)的作用,函數(shù)的接口等 2; #define 命令命名的宏定義 3:類型定義。包括結(jié)構(gòu)體,共用體,數(shù)組等類型定義 |