- 基于ARM的小功率電動(dòng)汽車(chē)控制器開(kāi)發(fā)
- 高志剛編著
- 568字
- 2021-03-10 14:17:49
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)限幅功能的代碼示例

- 汽車(chē)考證駕駛一本通
- 貨物運(yùn)輸實(shí)務(wù)
- 工程電氣設(shè)備安裝調(diào)試工
- 汽車(chē)板材先進(jìn)成形技術(shù)與應(yīng)用
- 汽車(chē)噴涂技能教程
- 汽車(chē)維修全程圖解(發(fā)動(dòng)機(jī)分冊(cè))(雙色版)
- 5G+智慧物流:賦能物流企業(yè)數(shù)字化轉(zhuǎn)型
- 智能駕駛:視覺(jué)感知后處理
- 自動(dòng)駕駛:感知原理與實(shí)踐
- 農(nóng)產(chǎn)品物流系統(tǒng)價(jià)值鏈優(yōu)化研究
- 汽車(chē)動(dòng)力傳動(dòng)系及動(dòng)力性能計(jì)算
- 新能源汽車(chē)結(jié)構(gòu)與原理
- 道路工程施工技術(shù)
- 城市道路交通運(yùn)行評(píng)價(jià)技術(shù)與應(yīng)用實(shí)踐
- 汽車(chē)鈑金維修技能教程