(b) ? (a) : (b) ) //把它用函數來實現: int max( int a, int b){ return (a > b ? a : b);} 如果我們在程序中將要使用比較大小的函數,我們顯然會選用上面的宏定義,理由如下: 首先,函數調用會帶來額外的開銷,他需要開" />

女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

預處理宏的優缺點有哪些

麥辣雞腿堡 ? 來源:軒哥談芯 ? 作者:軒哥談芯 ? 2023-11-01 17:44 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

預處理宏的優缺點

在軟件開發過程中,經常有一些常用或者通用的功能或者代碼段,這些功能既可以寫成函數,也可以封裝成為宏定義。那么究竟是用函數好,還是宏定義好?

我們還是看上一篇文章中引用的比較大小的例子:

#define MAX( a, b) ( (a) > (b) ? (a) : (b) )
//把它用函數來實現:
int max( int a, int b)
{  
    return (a > b ? a : b);
}

如果我們在程序中將要使用比較大小的函數,我們顯然會選用上面的宏定義,理由如下:

首先,函數調用會帶來額外的開銷,他需要開辟新的棧空間,記錄返回值,還需要將形參壓入棧中,函數返回時還需要釋放堆棧空間。

這樣的開銷不僅會讓程序執行效率變低,代碼量也會大大增加,因此使用上面的宏函數做文本替代就顯得更明智。

其次,函數的形參被聲明成了一個特定的類型,如例子中是 int,這樣如果我們軟件中需要使用浮點型的比較大小,我們就不得不重寫一個函數,從這一點也可以看到宏函數的優勢。

因為是文本的替換,因此他與類型也沒有關系,不過類型不對應,會在編譯階段的時候報錯,這點還是具備利用價值的。

另外,還有一些任務根本無法用函數實現****,但是用宏定義卻很好實現。

比如參數類型沒法作為參數傳遞給函數,但是可以把參數類型傳遞給帶參的宏。

看下面的例子:

#define MALLOC(n, type )((type ) malloc((n)sizeof( type )))

利用這個宏,我們就可以為任何類型分配一段我們指定的空間大小,并返回指向這段空間的指針。我們可以觀察一下這個宏確切的工作過程:

int *ptr;
ptr = MALLOC ( 5, int );
//將這宏展開以后的結果:
ptr = (int *) malloc ((5) * sizeof(int));

這個例子是宏定義的經典應用之一,完成了函數不能完成的功能,但是宏定義也不能濫用,通常,如果相同的代碼需要出現在程序的幾個地方,更好的方法是把它實現為一個函數。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 函數
    +關注

    關注

    3

    文章

    4381

    瀏覽量

    64945
  • 代碼
    +關注

    關注

    30

    文章

    4900

    瀏覽量

    70797
  • 預處理
    +關注

    關注

    0

    文章

    33

    瀏覽量

    10660
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    PCBA 表面處理優缺點大揭秘,應用場景全解析

    一站式PCBA加工廠家今天為大家講講PCBA加工如何選擇合適的表面處理工藝?PCBA表面處理優缺點與應用場景。在電子制造中,PCBA板的表面處理工藝對電路板的性能、可靠性和成本都有重要
    的頭像 發表于 05-05 09:39 ?498次閱讀
    PCBA 表面<b class='flag-5'>處理</b>:<b class='flag-5'>優缺點</b>大揭秘,應用場景全解析

    香港主機托管和國內主機的優缺點比較

    香港主機托管和國內主機(以大陸主機為例)的優缺點比較,主機推薦小編為您整理發布香港主機托管和國內主機的優缺點比較,希望對您有幫助。
    的頭像 發表于 02-05 17:42 ?449次閱讀

    東京站群服務器哪些優缺點

    東京站群服務器,作為部署在東京地區的服務器集群,專為站群優化而建,其優缺點如下,主機推薦小編為您整理發布東京站群服務器哪些優缺點
    的頭像 發表于 02-05 17:39 ?377次閱讀

    光譜傳感器的優缺點

    光譜傳感器是一種能夠檢測并響應光譜范圍內不同波長光線的傳感器。以下是對其優缺點的詳細分析:
    的頭像 發表于 01-27 15:28 ?709次閱讀

    請問在地震勘探上ADS1282與ADS1255相比什么優缺點

    請問在地震勘探上ADS1282與ADS1255相比什么優缺點
    發表于 11-22 07:06

    開環和閉環功放的區別,優缺點,應用場合什么不同?

    問下TI的工程師,開環和閉環功放的區別,優缺點,應用場合什么不同?請解釋下,謝謝!
    發表于 11-04 06:33

    請問Pre-Filter PBTL和Post-Filter PBTL相比什么優缺點

    Pre-Filter PBTL和Post-Filter PBTL 相比什么優缺點
    發表于 10-18 06:54

    電壓跟隨器優缺點哪些

    電壓跟隨器,也稱為電壓緩沖器或緩沖放大器,是一種特殊的放大器電路,其核心特點是輸出電壓緊密跟隨輸入電壓的變化,同時保持兩者之間的高度一致性。這種電路在電子設計中具有廣泛的應用,但也存在一些固有的優缺點
    的頭像 發表于 09-24 11:25 ?1289次閱讀

    雪崩晶體管有哪些優缺點

    雪崩晶體管作為一種特殊的半導體器件,在電子領域具有其獨特的優缺點
    的頭像 發表于 09-23 18:05 ?748次閱讀

    帶你了解無刷電機與刷電機的優缺點

    無刷電機和刷電機各有其獨特的優缺點,選擇哪種電機類型取決于具體的應用場景和需求。
    的頭像 發表于 09-21 11:24 ?2270次閱讀

    內存控制器哪些優缺點

    內存控制器作為計算機系統中的核心組件之一,在提高系統性能、優化數據傳輸以及確保數據穩定性方面發揮著至關重要的作用。然而,它同樣存在一些不可忽視的優缺點
    的頭像 發表于 09-04 14:20 ?872次閱讀

    單端放大電路的優缺點哪些

    單端放大電路,作為電子放大電路的一種重要形式,具有其獨特的優缺點。以下是對其優缺點的分析: 優點 音質純凈度高 : 單端放大電路使用單個放大器管或晶體管進行放大,從根本上避免了推挽式電路中由于兩個
    的頭像 發表于 09-03 10:08 ?1445次閱讀

    運放恒流源哪些優缺點

    運放恒流源,即利用運算放大器(Operational Amplifier,簡稱運放)構成的恒流源電路,具有一系列獨特的優點和缺點。以下是對其優缺點的詳細分析。
    的頭像 發表于 08-28 10:18 ?2230次閱讀

    放大器增益調節哪些優缺點

    放大器增益調節的優缺點是多方面的,這些方面涉及到放大器的性能、應用、設計以及實際使用中的挑戰。
    的頭像 發表于 08-16 17:14 ?1888次閱讀

    GaN HEMT哪些優缺點

    GaN HEMT(氮化鎵高電子遷移率晶體管)作為一種先進的功率半導體器件,在電力電子、高頻通信、汽車電子等多個領域展現出了顯著的優勢,但同時也存在一些缺點。以下是對GaN HEMT優缺點的詳細分析:
    的頭像 發表于 08-15 11:09 ?2948次閱讀