本例中采用了第三種形式的條件編譯。在程序第一行宏定義中,定義R為1,因此在條件編譯時,常量表達(dá)式的值為真, 故計算并輸出圓面積。上面介紹的條件編譯當(dāng)然也可以用條件語句來實現(xiàn)。 但是用條件語句將會對整個源程序進(jìn)行編譯,生成的目標(biāo)代碼程序很長,而采用條件編譯,則根據(jù)條件只編譯其中的程序段1或程序段2, 生成的目標(biāo)程序較短。如果條件選擇的程序段很長, 采用條件編譯的方法是十分必要的。
本章小結(jié)
1. 預(yù)處理功能是C語言特有的功能,它是在對源程序正式編譯前由預(yù)處理程序完成的。程序員在程序中用預(yù)處理命令來調(diào)用這些功能。
2. 宏定義是用一個標(biāo)識符來表示一個字符串,這個字符串可以是常量、變量或表達(dá)式。在宏調(diào)用中將用該字符串代換宏名。
3. 宏定義可以帶有參數(shù),宏調(diào)用時是以實參代換形參。而不是“值傳送”。
4. 為了避免宏代換時發(fā)生錯誤,宏定義中的字符串應(yīng)加括號,字符串中出現(xiàn)的形式參數(shù)兩邊也應(yīng)加括號。
5. 文件包含是預(yù)處理的一個重要功能,它可用來把多個源文件連接成一個源文件進(jìn)行編譯,結(jié)果將生成一個目標(biāo)文件。
6. 條件編譯允許只編譯源程序中滿足條件的程序段,使生成的目標(biāo)程序較短,從而減少了內(nèi)存的開銷并提高了程序的效率。
7. 使用預(yù)處理功能便于程序的修改、閱讀、移植和調(diào)試,也便于實現(xiàn)模塊化程序設(shè)計。