一:
1.預處理命令的作用:
改進(jìn)程序設計環(huán)境,提高編程效率。
2.預處理命令不是C語(yǔ)言的組成部分,不能對它們進(jìn)行編譯(應為編譯程序不能識別它們),必須在對程序進(jìn)行通常的編譯(包括詞法和語(yǔ)法分析,代碼生成,優(yōu)化等)之前,先對這些特殊的命令(預處理命令)進(jìn)行預處理,,即根據預處理命令對程序作相應的處理。
二:
宏定義有2種
1.不帶參數的宏定義
2.帶參數的宏定義
不帶參數的宏的定義:
1)形式:
#define 標識符 字符串
2)說(shuō)明:
1:宏名一般習慣用大寫(xiě)字母,以便與變量名區別
2: 使用宏名代替一個(gè)字符串,可以減少程序中重復書(shū)寫(xiě)某些字符串的工作量
3: 宏定義是用宏名代替一個(gè)字符串,也就是作簡(jiǎn)單的置換,不作正確性檢查
4: 宏定義不是C語(yǔ)句,不必在行末加分號
5:#define命令出現在程序中函數的外面,宏名的有效范圍為定義命令子后到本源文件結束。通常,#define命令在文件的開(kāi)頭,函數之前,作為文件的一部分,在次文件范圍內有效。
6:可以用#undef命令終止宏定義的作用域
7:在進(jìn)行宏定義時(shí),可以引用以定義的宏名,可以層層置換
8:對程序中用雙撇號括起來(lái)的字符串內的字符,即使宏名相同,也不進(jìn)行置換
9:宏定義時(shí)專(zhuān)門(mén)用于預處理命令的一個(gè)專(zhuān)用名詞,它與定義的變量的含義不同,只作字符替換,不分配內存空間。
帶參數的宏定義:
不是簡(jiǎn)單的進(jìn)行字符串替換,還要進(jìn)行參數替換
1)形式:
#define 宏名(參數) 字符串
2)說(shuō)明:
1:對帶參數的宏的展開(kāi)只是將語(yǔ)句中的宏名后面括號內的實(shí)參字符串代替#define命令行中的形參
2:在宏定義時(shí),在宏名與帶參數的括弧之間不應加空格,否則將空殼以后的字符都將作為替代字符串的一部分
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請
點(diǎn)擊舉報。