c語言定義宏函數(shù) c語言如何宏定義函數(shù)

C語言-函數(shù)式宏

函數(shù)式宏(function-like macro)較之對象式宏可以進(jìn)行更復(fù)雜的代換。

網(wǎng)站建設(shè)公司,為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁設(shè)計(jì)及定制網(wǎng)站建設(shè)服務(wù),專注于成都企業(yè)網(wǎng)站定制,高端網(wǎng)頁制作,對輕質(zhì)隔墻板等多個(gè)行業(yè)擁有豐富的網(wǎng)站建設(shè)經(jīng)驗(yàn)的網(wǎng)站建設(shè)公司。專業(yè)網(wǎng)站設(shè)計(jì),網(wǎng)站優(yōu)化推廣哪家好,專業(yè)seo優(yōu)化優(yōu)化,H5建站,響應(yīng)式網(wǎng)站。

函數(shù)式宏 sqr 是在編譯時(shí)展開并填入程序的,因此 只要是能用雙目運(yùn)算符 * 進(jìn)行乘法計(jì)算的數(shù)據(jù)類型,都能使用函數(shù)式宏 。

函數(shù)定義則需為每個(gè)形參都定義各自的數(shù)據(jù)類型,返回值的類型也只能為一種。就這點(diǎn)而言,函數(shù)較為嚴(yán)格。

函數(shù)為我們默默無聞地進(jìn)行了一些復(fù)雜處理,如:

而函數(shù)式宏所做的工作只是宏展開和填入程序,并不進(jìn)行上述處理。

根據(jù)以上特征, 函數(shù)式宏或許能使程序的運(yùn)行速度稍微提高一點(diǎn),但是程序自身卻有可能變得臃腫 。

函數(shù)式宏在使用上必須小心謹(jǐn)慎。例如, sqr(a++) 展開后 ((a++) * (a++)) 。每次展開, a 的值都會(huì)自增兩次。在不經(jīng)意間表達(dá)式被執(zhí)行了兩次,導(dǎo)致程序出現(xiàn)預(yù)料之外的結(jié)果,我們稱這種情況為宏的 副作用(side effect) 。

在C語言中 宏定義是什么?

在C語言源程序中,允許用一個(gè)標(biāo)識符來表示一個(gè)字符串,稱為宏,宏定義是由源程序中的宏定義命令完成的,宏替換是由預(yù)處理程序自動(dòng)完成的。宏定義是C提供的三種預(yù)處理功能的其中一種,這三種預(yù)處理包括:宏定義、文件包含、條件編譯。

擴(kuò)展資料:

宏(Macro),是一種批量處理的稱謂。計(jì)算機(jī)科學(xué)里的宏是一種抽象,它根據(jù)一系列預(yù)定義的規(guī)則替換一定的文本模式。

計(jì)算機(jī)語言如C語言或匯編語言有簡單的宏系統(tǒng),由編譯器或匯編器的預(yù)處理器實(shí)現(xiàn)。C語言的宏預(yù)處理器的工作只是簡單的文本搜索和替換,使用附加的文本處理語言如M4,C程序員可以獲得更精巧的宏。

參考資料:

宏定義百度百科

“C語言的宏定義”是什么?

宏定義又稱為宏代換、宏替換,簡稱“宏”。

是C提供的三種預(yù)處理功能的其中一種。

1、宏名一般用大寫。

2、使用宏可提高程序的通用性和易讀性,減少不一致性,減少輸入錯(cuò)誤和便于修改。例如:數(shù)組大小常用宏定義。

3、預(yù)處理是在編譯之前的處理,而編譯工作的任務(wù)之一就是語法檢查,預(yù)處理不做語法檢查。

4、宏定義末尾不加分號。

5、宏定義寫在函數(shù)的花括號外邊,作用域?yàn)槠浜蟮某绦?,通常在文件的最開頭。

6、可以用#undef命令終止宏定義的作用域。

7、宏定義可以嵌套。

8、字符串" "中永遠(yuǎn)不包含宏。

9、宏定義不分配內(nèi)存,變量定義分配內(nèi)存。

網(wǎng)頁名稱:c語言定義宏函數(shù) c語言如何宏定義函數(shù)
分享鏈接:http://bm7419.com/article6/ddeppig.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、域名注冊、企業(yè)網(wǎng)站制作面包屑導(dǎo)航、定制開發(fā)、手機(jī)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)