官术网_书友最值得收藏!

3.8 宏定義

在C語(yǔ)言中,可以使用宏定義將一個(gè)一段代碼等效成另一段代碼。源代碼中的宏定義在編譯之前,就會(huì)由編譯器首先替換成實(shí)際等效的代碼,之后源代碼才會(huì)經(jīng)過(guò)編譯和鏈接,最終生成目標(biāo)文件。使用宏定義,可以簡(jiǎn)化代碼并增強(qiáng)代碼的可讀性。例如可以將圓周率3.1415926定義成一個(gè)代碼PI,這樣在程序中可以使用PI作為圓周率。表3-40中給出了對(duì)圓周率進(jìn)行宏定義并用來(lái)計(jì)算圓的面積的示例代碼。

表3-40 應(yīng)用宏定義的代碼示例

宏定義中還可以使用參數(shù),從而具備類(lèi)似于C語(yǔ)言的函數(shù)一樣的功能。同樣,這些相應(yīng)的宏定義也是在編譯之前被替換為實(shí)際的代碼的。計(jì)算圓的面積的宏定義和示例代碼如表3-41所示,其中參數(shù)x就是圓的半徑,編譯器會(huì)在編譯代碼之前,首先將第6行代碼替換為“float area = (3.14*(r)*(r)); ”。此外,在第2行的宏定義中,之所以在表達(dá)式中將每個(gè)x放在小括號(hào)中,是為了避免出現(xiàn)優(yōu)先級(jí)錯(cuò)誤。例如,在宏定義中未將參數(shù)放在小括號(hào)中,即定義A(x)為3.14*x*x,則A(3 + 2)會(huì)變?yōu)?.14*3 + 2*3 + 2,而不是3.14*(3 + 2)*(3 + 2)。

表3-41 利用宏定義求取圓面積的示例代碼

宏定義還可以使用多個(gè)參數(shù),不同參數(shù)之間用逗號(hào)隔開(kāi)即可。例如可以設(shè)計(jì)一個(gè)限制變量最大值和最小值的宏,定義為L(zhǎng)IMIT(a,minVal, maxVal),則其示例代碼如表3-42所示。宏定義中,每個(gè)參數(shù)也都放置在一對(duì)小括號(hào)內(nèi)。該宏定義可以用來(lái)限制變量的數(shù)值。

表3-42 利用宏實(shí)現(xiàn)限幅功能的代碼示例

主站蜘蛛池模板: 阿合奇县| 青浦区| 清镇市| 清水县| 萨嘎县| 百色市| 望江县| 赞皇县| 榆林市| 西华县| 多伦县| 聂拉木县| 宁国市| 子长县| 阜新市| 明溪县| 潼南县| 洪洞县| 绥化市| 安顺市| 平陆县| 兴业县| 桂阳县| 东乡族自治县| 咸宁市| 陆丰市| 田东县| 盐源县| 威远县| 通海县| 精河县| 铜山县| 海城市| 太仆寺旗| 九龙城区| 中卫市| 宁陕县| 台南市| 红安县| 清徐县| 峨眉山市|