溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

c語(yǔ)言定義的宏定義是什么

發(fā)布時(shí)間:2020-07-13 15:33:22 來(lái)源:億速云 閱讀:188 作者:Leah 欄目:編程語(yǔ)言

c語(yǔ)言定義的宏定義是什么?相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。

宏定義是比較常用的預(yù)處理指令,即使用“標(biāo)識(shí)符”來(lái)表示“替換列表”中的內(nèi)容。標(biāo)識(shí)符稱(chēng)為宏名,在預(yù)處理過(guò)程中,預(yù)處理器會(huì)把源程序中所有宏名,替換成宏定義中替換列表中的內(nèi)容。

c語(yǔ)言定義的宏定義是什么

常見(jiàn)的宏定義有兩種,不帶參數(shù)的宏定義和帶參數(shù)的宏定義。

宏定義可以幫助我們防止出錯(cuò),提高代碼的可移植性和可讀性等。
在軟件開(kāi)發(fā)過(guò)程中,經(jīng)常有一些常用或者通用的功能或者代碼段,這些功能既可以寫(xiě)成函數(shù),也可以封裝成為宏定義。那么究竟是用函數(shù)好,還是宏定義好?這就要求我們對(duì)二者進(jìn)行合理的取舍。
  我們來(lái)看一個(gè)例子,比較兩個(gè)數(shù)或者表達(dá)式大小,首先我們把它寫(xiě)成宏定義:

  #define MAX( a, b) ( (a) > (b) (a) : (b) )  
  # 其次,把它用函數(shù)來(lái)實(shí)現(xiàn):
  int max( int a, int b)
  {
  return (a > b a : b)
  }

  很顯然,我們不會(huì)選擇用函數(shù)來(lái)完成這個(gè)任務(wù),原因有兩個(gè):首先,函數(shù)調(diào)用會(huì)帶來(lái)額外的開(kāi)銷(xiāo),它需要開(kāi)辟一片棧空間,記錄返回地址,將形參壓棧,從函數(shù)返回還要釋放堆棧。這種開(kāi)銷(xiāo)不僅會(huì)降低代碼效率,而且代碼量也會(huì)大大增加,而使用宏定義則在代碼規(guī)模和速度方面都比函數(shù)更勝一籌;其次,函數(shù)的參數(shù)必須被聲明為一種特定的類(lèi)型,所以它只能在類(lèi)型合適的表達(dá)式上使用,我們?nèi)绻容^兩個(gè)浮點(diǎn)型的大小,就不得不再寫(xiě)一個(gè)專(zhuān)門(mén)針對(duì)浮點(diǎn)型的比較函數(shù)。反之,上面的那個(gè)宏定義可以用于整形、長(zhǎng)整形、單浮點(diǎn)型、雙浮點(diǎn)型以及其他任何可以用“>”操作符比較值大小的類(lèi)型,也就是說(shuō),宏是與類(lèi)型無(wú)關(guān)的。
  和使用函數(shù)相比,使用宏的不利之處在于每次使用宏時(shí),一份宏定義代碼的拷貝都會(huì)插入到程序中。除非宏非常短,否則使用宏會(huì)大幅度增加程序的長(zhǎng)度。

看完上述內(nèi)容,你們掌握c語(yǔ)言定義的宏定義是什么的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI