欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

什么是宏定義函數(shù)-創(chuàng)新互聯(lián)

創(chuàng)新互聯(lián)www.cdcxhl.cn八線動態(tài)BGP香港云服務(wù)器提供商,新人活動買多久送多久,劃算不套路!

林周ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!

這篇文章將為大家詳細(xì)講解有關(guān)什么是宏定義函數(shù),文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。

在預(yù)處理時,對程序中所有出現(xiàn)的“宏名”,都用宏定義中的字符串去代換,這稱為“宏代換”或“宏展開”。宏定義是由源程序中的宏定義命令完成的。宏代換是由預(yù)處理程序自動完成的。若字符串是表達(dá)式,我們稱之為函數(shù)式宏定義。

我們以下面兩行代碼為例,展開描述:

函數(shù)式宏定義:#define MAX(a,b) ((a)>(b)?(a):(b))

普通函數(shù) :MAX(a,b) { return a>b?a:b;}

(1)函數(shù)式宏定義的參數(shù)沒有類型,預(yù)處理器只負(fù)責(zé)做形式上的替換,而不做參數(shù)類型檢查,所以傳參時要格外小心。

(2)函數(shù)式宏定義要注意格式,尤其是括號。

若上面的宏定義式函數(shù)寫成#define MAX(a,b) (a>b?a:b)省去內(nèi)層括號,宏展開后由于運(yùn)算符優(yōu)先級,運(yùn)行結(jié)果出錯;若上面的宏定義式函數(shù)省去外層括號,宏定義為 ++MAX(a,b),則宏展開就成了 ++(a)>(b)?(a):(b),運(yùn)算優(yōu)先級也是錯了。

(3)若函數(shù)參數(shù)為表達(dá)式,則普通函數(shù)的調(diào)用與函數(shù)式宏定義的替換過程是不一樣的。

普通函數(shù)調(diào)用時先求實(shí)參表達(dá)式的值再傳給形參,如果實(shí)參表達(dá)式有Side Effect,那么這些SideEffect只發(fā)生一次。例如MAX(++a, ++b),如果MAX是普通函數(shù),a和b只增加一次。但如果MAX函數(shù)式宏定義,則要展開成k = ((++a)>(++b)?(++a):(++b)),a和b就不一定是增加一次還是兩次了。所以若參數(shù)是表達(dá)式,替換函數(shù)式宏定義時一定要仔細(xì)看好。

(4)調(diào)用真正函數(shù)的代碼和調(diào)用函數(shù)式宏定義的代碼編譯生成的指令不同。

如果MAX是個普通函數(shù),那么它的函數(shù)體return a > b ? a : b; 要編譯生成指令,代碼中出現(xiàn)的每次調(diào)用也要編譯生成傳參指令和call指令。而如果MAX是個函數(shù)式宏定義,這個宏定義本身倒不必編譯生成指令,但是代碼中出現(xiàn)的每次調(diào)用編譯生成的指令都相當(dāng)于一個函數(shù)體,而不是簡單的幾條傳參指令和call指令。所以,使用函數(shù)式宏定義編譯生成的目標(biāo)文件會比較大。

優(yōu)勢:

首先,函數(shù)調(diào)用會帶來額外的開銷,它需要開辟一片棧空間,記錄返回地址,將形參壓棧,從函數(shù)返回還要釋放堆棧,這種開銷會降低代碼效率,而使用宏定義則在代碼規(guī)模和速度方面比函數(shù)更勝一籌;

其次,函數(shù)的參數(shù)必須被聲明為一種特定的類型,所以它只能在類型合適的表達(dá)式上使用,我們?nèi)绻容^兩個浮點(diǎn)型的大小,就不得不再寫一個專門針對浮點(diǎn)型大小的比較函數(shù),反之,上面的宏定義可以用于整型、長整型、單浮點(diǎn)型、雙浮點(diǎn)型及其他可以用“<”操作符比較值大小的類型,也就是說,宏與類型無關(guān)。

關(guān)于什么是宏定義函數(shù)就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

分享名稱:什么是宏定義函數(shù)-創(chuàng)新互聯(lián)
網(wǎng)站URL:http://www.aaarwkj.com/article32/ccjesc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、微信小程序品牌網(wǎng)站制作、關(guān)鍵詞優(yōu)化、虛擬主機(jī)、網(wǎng)站營銷

廣告

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

成都seo排名網(wǎng)站優(yōu)化
成人亚洲精品一区二区三区| 丰满人妻被猛烈进入中文版| 亚洲午夜精品久久久天堂| 亚洲伦理一区二区三区中文| 91av国产一区二区| 亚洲av色福免费网站| 欧美亚洲综合日韩精品区| 香蕉视频欧美日韩国产| 在线观看免费国产b片| 91欧美一区二区在线视频| 国产成人综合久久三区北岛玲| 日本姜女黄视频免费看| 18禁在线免费观看网站| 中文字幕欧美日韩人妻| 一区二区在线观看激情| 欧美日韩亚洲1区2区| 亚洲精品中文字幕日本乱码| 国产91精品成人在线观看| 国产精品网站在线观看| 韩国一级av免费在线| 亚洲人成伊人成综合网中文| 国产强烈高潮粗暴对白| 欧洲一区二区三区黄色| 精品人妻av区久久久| 可以免费看黄的网久久| 亚洲最大五月六月丁香婷婷| 国产亚洲av综合人人精品| 中文字幕在线日韩精品| 传媒精品视频在线观看| 亚洲欧美日韩国产成人精品| 国产不卡高清视频在线| 欧美伊香蕉久久综合网99| 日本精品动漫一区二区三区| 色橹橹欧美午夜精品福利| 日韩视频一区二区三区四区| 中文字幕精品免费日韩在线| 国产av一级二级三级最新精品| 国产成人原创免费观看| 偷窥偷拍原味一区二区三区| 国产欧美色日韩综合在线| 91女厕偷拍女厕偷拍|