(b) ? (a) : (b) ) //把它用函數(shù)來(lái)實(shí)現(xiàn): int max( int a, int b){ return (a > b ? a : b);} 如果我們?cè)诔绦蛑袑⒁褂帽容^大小的函數(shù),我們顯然會(huì)選用上面的宏定義,理由如下: 首先,函數(shù)調(diào)用會(huì)帶來(lái)額外的開銷,他需要開" />

91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

預(yù)處理宏的優(yōu)缺點(diǎn)有哪些

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

掃碼添加小助手

加入工程師交流群

預(yù)處理宏的優(yōu)缺點(diǎn)

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

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

#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);
}

如果我們?cè)诔绦蛑袑⒁褂帽容^大小的函數(shù),我們顯然會(huì)選用上面的宏定義,理由如下:

首先,函數(shù)調(diào)用會(huì)帶來(lái)額外的開銷,他需要開辟新的??臻g,記錄返回值,還需要將形參壓入棧中,函數(shù)返回時(shí)還需要釋放堆棧空間。

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

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

因?yàn)槭俏谋镜奶鎿Q,因此他與類型也沒有關(guān)系,不過類型不對(duì)應(yīng),會(huì)在編譯階段的時(shí)候報(bào)錯(cuò),這點(diǎn)還是具備利用價(jià)值的。

另外,還有一些任務(wù)根本無(wú)法用函數(shù)實(shí)現(xiàn)****,但是用宏定義卻很好實(shí)現(xiàn)。

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

看下面的例子:

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

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

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

這個(gè)例子是宏定義的經(jīng)典應(yīng)用之一,完成了函數(shù)不能完成的功能,但是宏定義也不能濫用,通常,如果相同的代碼需要出現(xiàn)在程序的幾個(gè)地方,更好的方法是把它實(shí)現(xiàn)為一個(gè)函數(shù)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4417

    瀏覽量

    67552
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4968

    瀏覽量

    74012
  • 預(yù)處理
    +關(guān)注

    關(guān)注

    0

    文章

    33

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    arm嵌入式主板優(yōu)缺點(diǎn)

    嵌入式主板是嵌入在設(shè)備里面做控制、數(shù)據(jù)處理使用的CPU板 ,常見的兩類,即基于X86的嵌入式主板和基于RISC的ARM 嵌入式主板。今天我們就來(lái)認(rèn)識(shí)arm嵌入式主板,arm嵌入式主板就是一個(gè)嵌入在
    發(fā)表于 01-08 07:08

    C語(yǔ)言中實(shí)現(xiàn)函數(shù)的三種方式

    十分接近。 優(yōu)缺點(diǎn)總結(jié): 優(yōu)點(diǎn):支持在無(wú)花括號(hào)且有分支的 if 語(yǔ)句中直接調(diào)用;返回值,支持作為表達(dá)式的右值。 缺點(diǎn):不支持提前退出函數(shù);非 C 的原生語(yǔ)法,編譯器可能不支持。
    發(fā)表于 12-29 07:34

    電能質(zhì)量在線監(jiān)測(cè)裝置測(cè)溫功能的無(wú)線通信方式的優(yōu)缺點(diǎn)哪些?

    電能質(zhì)量在線監(jiān)測(cè)裝置測(cè)溫功能的無(wú)線通信方式,可按 短距無(wú)線、長(zhǎng)距低功耗廣域 (LPWAN)、廣域蜂窩通信 三大類分別分析優(yōu)缺點(diǎn),不同方式適配不同場(chǎng)景,其優(yōu)勢(shì)與局限高度關(guān)聯(lián)自身技術(shù)特性,具體如下: 一
    的頭像 發(fā)表于 12-10 11:51 ?743次閱讀
    電能質(zhì)量在線監(jiān)測(cè)裝置測(cè)溫功能的無(wú)線通信方式的<b class='flag-5'>優(yōu)缺點(diǎn)</b><b class='flag-5'>有</b>哪些?

    C語(yǔ)言拼接運(yùn)算符典型使用

    在C語(yǔ)言中,##運(yùn)算符(稱為[size=16.002px]標(biāo)記拼接運(yùn)算符)用于定義中將兩個(gè)標(biāo)記(token)拼接成一個(gè)新的標(biāo)記。它在預(yù)處理階段處理,常用于動(dòng)態(tài)生成變量名、函數(shù)名或類型名,以提高代碼
    發(fā)表于 11-20 08:27

    不同類型的電能質(zhì)量在線監(jiān)測(cè)裝置數(shù)據(jù)存儲(chǔ)方式哪些優(yōu)缺點(diǎn)?

    不同類型的電能質(zhì)量在線監(jiān)測(cè)裝置數(shù)據(jù)存儲(chǔ)方式,核心差異體現(xiàn)在 數(shù)據(jù)控制權(quán)、實(shí)時(shí)性、運(yùn)維成本、擴(kuò)展性 上,主要分為 本地存儲(chǔ)、云端存儲(chǔ)、混合存儲(chǔ) 三類。每類方式的優(yōu)缺點(diǎn)需結(jié)合電能質(zhì)量數(shù)據(jù)特征(時(shí)序性
    的頭像 發(fā)表于 10-30 10:00 ?303次閱讀

    數(shù)據(jù)預(yù)處理軟核加速模塊設(shè)計(jì)

    數(shù)據(jù)拼接操作,其預(yù)處理模塊結(jié)構(gòu)框圖如下圖 模塊最后得到的信號(hào)為ddr_q、ddr_clk和ddr_wrreq。ddr_q是并行128bits圖像數(shù)據(jù),ddr_clk是RAM的出口時(shí)鐘,同時(shí)引出作為下一模塊的數(shù)據(jù)時(shí)鐘,ddr_wrreq置高時(shí)代表有效數(shù)據(jù)。
    發(fā)表于 10-29 08:09

    無(wú)線局域網(wǎng)的優(yōu)缺點(diǎn)和使用要點(diǎn)

    近年來(lái),無(wú)線局域網(wǎng) 已普遍應(yīng)用于我們生活的方方面面。本文將介紹無(wú)線局域網(wǎng)的基礎(chǔ)知識(shí)、優(yōu)缺點(diǎn)、與 Wi-Fi 及有線局域網(wǎng)的區(qū)別,以及有效使用的要點(diǎn)。全球領(lǐng)先的短距離無(wú)線模塊供應(yīng)商 KAGA FEI
    的頭像 發(fā)表于 08-14 16:04 ?3017次閱讀
    無(wú)線局域網(wǎng)的<b class='flag-5'>優(yōu)缺點(diǎn)</b>和使用要點(diǎn)

    鋰電池制造 | 電芯預(yù)處理工藝的步驟詳解

    電芯預(yù)處理是鋰電池包制造的首要工序,無(wú)論是新能源汽車的續(xù)航穩(wěn)定性,還是儲(chǔ)能系統(tǒng)的循環(huán)壽命,其根基都可追溯至預(yù)處理工序?qū)﹄娦疽恢滦缘陌芽兀浜诵脑谟谕ㄟ^系統(tǒng)檢測(cè)與篩選消除量產(chǎn)電芯的性能差異,為后續(xù)組裝
    的頭像 發(fā)表于 08-11 14:53 ?1587次閱讀
    鋰電池制造 | 電芯<b class='flag-5'>預(yù)處理</b>工藝的步驟詳解

    超級(jí)電容對(duì)比鋰電池的優(yōu)缺點(diǎn)

    本文探討了超級(jí)電容和鋰電池在儲(chǔ)能領(lǐng)域的優(yōu)缺點(diǎn)。超級(jí)電容以高能量密度著稱,但充電速度較慢;鋰電池則具有快充和壽命長(zhǎng)的優(yōu)勢(shì),但成本較高。在新能源汽車和電網(wǎng)調(diào)頻等高頻次應(yīng)用中,兩者可以互補(bǔ)。
    的頭像 發(fā)表于 06-30 09:37 ?2678次閱讀
    超級(jí)電容對(duì)比鋰電池的<b class='flag-5'>優(yōu)缺點(diǎn)</b>

    商業(yè)云手機(jī)核心優(yōu)缺點(diǎn)分析

    商業(yè)云手機(jī)核心優(yōu)缺點(diǎn)分析,綜合技術(shù)性能、成本效率及場(chǎng)景適配性等多維度對(duì)比: 核心優(yōu)勢(shì)? 成本革命? 硬件零投入?:免除實(shí)體手機(jī)采購(gòu)(旗艦機(jī)均價(jià)6000元),企業(yè)百臺(tái)規(guī)??墒?0萬(wàn)+ CAPEX
    的頭像 發(fā)表于 06-16 08:11 ?1058次閱讀
    商業(yè)云手機(jī)核心<b class='flag-5'>優(yōu)缺點(diǎn)</b>分析

    PCBA 表面處理優(yōu)缺點(diǎn)大揭秘,應(yīng)用場(chǎng)景全解析

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

    3D打印耗材種類哪些?各有什么優(yōu)缺點(diǎn)?

    這篇文章將為你詳細(xì)介紹3D打印耗材的基礎(chǔ)知識(shí),幫助你了解這些材料的特性、優(yōu)缺點(diǎn)以及它們適合的應(yīng)用場(chǎng)景。
    的頭像 發(fā)表于 04-29 09:40 ?5.4w次閱讀
    3D打印耗材種類<b class='flag-5'>有</b>哪些?各有什么<b class='flag-5'>優(yōu)缺點(diǎn)</b>?

    FPGA Verilog HDL語(yǔ)法之編譯預(yù)處理

    Verilog HDL語(yǔ)言和C語(yǔ)言一樣也提供了編譯預(yù)處理的功能?!熬幾g預(yù)處理”是Verilog HDL編譯系統(tǒng)的一個(gè)組成部分。Verilog HDL語(yǔ)言允許在程序中使用幾種特殊的命令(它們不是一般
    的頭像 發(fā)表于 03-27 13:30 ?1454次閱讀
    FPGA Verilog HDL語(yǔ)法之編譯<b class='flag-5'>預(yù)處理</b>

    CMOS,Bipolar,F(xiàn)ET這三種工藝的優(yōu)缺點(diǎn)是什么?

    在我用photodiode工具選型I/V放大電路的時(shí)候,系統(tǒng)給我推薦了AD8655用于I/V,此芯片為CMOS工藝 但是查閱資料很多都是用FET工藝的芯片,所以請(qǐng)教下用于光電信號(hào)放大轉(zhuǎn)換(主要考慮信噪比和帶寬)一般我們用哪種工藝的芯片, CMOS,Bipolar,F(xiàn)ET這三種工藝的優(yōu)缺點(diǎn)是什么?
    發(fā)表于 03-25 06:23

    壓接連接器使用裸銅線的優(yōu)缺點(diǎn)分析?

    壓接連接器使用裸銅線是一種高效、可靠的電氣連接方式,廣泛應(yīng)用于電力、通信和工業(yè)領(lǐng)域。需要我們正確看待它的優(yōu)缺點(diǎn),高效使用。
    的頭像 發(fā)表于 03-18 11:01 ?1181次閱讀