在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

宏的缺陷與內(nèi)聯(lián)函數(shù)的引入

麥辣雞腿堡 ? 來(lái)源:軒哥談芯 ? 作者:軒哥談芯 ? 2023-11-01 17:57 ? 次閱讀

宏雖然有著一定的優(yōu)勢(shì),但是它的缺點(diǎn)也不可忽視。

在編譯階段,我們很難發(fā)現(xiàn)代碼哪里出問(wèn)題了,因?yàn)楹晏鎿Q是發(fā)生在預(yù)處理階段,所以有時(shí)候在宏函數(shù)傳參的時(shí)候發(fā)生一些錯(cuò)誤,編譯器不會(huì)發(fā)現(xiàn),那它調(diào)試起來(lái)就很麻煩。

所以為了解決這種不利于調(diào)試的問(wèn)題,就有了內(nèi)聯(lián)函數(shù)。

那么什么是內(nèi)聯(lián)函數(shù)呢?

我們以inline修飾的函數(shù)叫做內(nèi)聯(lián)函數(shù),編譯階段,C編譯器會(huì)在調(diào)用函數(shù)的地方直接把函數(shù)展開(kāi),沒(méi)有壓棧開(kāi)銷,內(nèi)聯(lián)函數(shù)提升程序運(yùn)行效率,但是會(huì)相應(yīng)的增加代碼的長(zhǎng)度。所以這里叫做空間換時(shí)間。

道之初,帶來(lái)了空間和時(shí)間,所以,空間和時(shí)間就是編程的陰陽(yáng)兩級(jí)。

不懂編程之道的程序員常常把空間和時(shí)間消耗殆盡,得道的程序員則總是有足夠的空間和時(shí)間完成編程任務(wù)。

舉個(gè)例子

inline int Add(int a,int b){ return a+b;}

編譯期間,編譯器會(huì)將內(nèi)聯(lián)函數(shù)替換相應(yīng)的函數(shù)體;

這里要注意一點(diǎn),在函數(shù)前加 inline 只是建議編譯器當(dāng)作內(nèi)容函數(shù)處理 ,但編譯器有自己的主張(遞歸 ,復(fù)雜函數(shù)等)

內(nèi)聯(lián)函數(shù)的特性:

inline是一種以空間換時(shí)間的做法,省去調(diào)用函數(shù)中參數(shù)壓棧,減少了調(diào)用的開(kāi)銷。同時(shí),使用內(nèi)聯(lián)函數(shù)也比宏函數(shù)更省心,不必?fù)?dān)心宏參數(shù)傳遞過(guò)程中出現(xiàn)的意外情況。

inline對(duì)于編譯器而言只是一個(gè)建議,編譯器會(huì)自動(dòng)優(yōu)化,如果定義為inline的函數(shù)體內(nèi)有循環(huán)/遞歸等等,編譯器優(yōu)化時(shí)會(huì)忽略掉內(nèi)聯(lián),另外,如果內(nèi)聯(lián)函數(shù)的函數(shù)體過(guò)大,一般的編譯器也會(huì)放棄內(nèi)聯(lián)方式,采用普通調(diào)用的方式進(jìn)行函數(shù)調(diào)用。

inline不建議聲明和定義分離,分離會(huì)導(dǎo)致鏈接錯(cuò)誤。因?yàn)閕nline被展開(kāi),就沒(méi)有函數(shù)地址了,鏈接就會(huì)找不到。

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

    關(guān)注

    3

    文章

    4346

    瀏覽量

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

    關(guān)注

    30

    文章

    4828

    瀏覽量

    69058
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1642

    瀏覽量

    49289
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    EE-32:語(yǔ)言擴(kuò)展:內(nèi)存存儲(chǔ)類型、ASM和內(nèi)聯(lián)構(gòu)造

    電子發(fā)燒友網(wǎng)站提供《EE-32:語(yǔ)言擴(kuò)展:內(nèi)存存儲(chǔ)類型、ASM和內(nèi)聯(lián)構(gòu)造.pdf》資料免費(fèi)下載
    發(fā)表于 01-14 15:03 ?0次下載
    EE-32:語(yǔ)言擴(kuò)展:內(nèi)存存儲(chǔ)類型、ASM和<b class='flag-5'>內(nèi)聯(lián)</b>構(gòu)造

    A/B型缺陷和D/V類缺陷介紹

    在直拉法(cz)和區(qū)熔法(Fz)制成的單晶硅錠中內(nèi)生微缺陷都由V/G控制,其中,V是結(jié)晶前沿晶體生長(zhǎng)速率,G是晶體中固液界面附近的軸向溫度梯度。 如果V/G低于臨界值,則形成的缺陷為A型漩渦缺陷或B
    的頭像 發(fā)表于 11-14 16:41 ?357次閱讀
    A/B型<b class='flag-5'>缺陷</b>和D/V類<b class='flag-5'>缺陷</b>介紹

    SUMIF函數(shù)與SUMIFS函數(shù)的區(qū)別

    SUMIF函數(shù)和SUMIFS函數(shù)都是Excel中用于條件求和的函數(shù),它們可以幫助用戶根據(jù)特定的條件對(duì)數(shù)據(jù)進(jìn)行求和。盡管它們的基本功能相似,但在使用場(chǎng)景和功能上存在一些差異。以下是對(duì)這兩個(gè)函數(shù)
    的頭像 發(fā)表于 10-30 09:51 ?1579次閱讀

    TC387中有__disable_interrupts()關(guān)閉所有中斷和打開(kāi)所有中斷的函數(shù)嗎?

    TC387 芯片中有__disable_irq()和__enable_irq()關(guān)閉所有中斷和打開(kāi)所有中斷的函數(shù)嗎,請(qǐng)告知
    發(fā)表于 08-01 08:22

    BP神經(jīng)網(wǎng)絡(luò)激活函數(shù)怎么選擇

    中,激活函數(shù)起著至關(guān)重要的作用,它決定了神經(jīng)元的輸出方式,進(jìn)而影響整個(gè)網(wǎng)絡(luò)的性能。 一、激活函數(shù)的作用 激活函數(shù)是BP神經(jīng)網(wǎng)絡(luò)中神經(jīng)元的核心組成部分,其主要作用如下: 引入非線性:激活
    的頭像 發(fā)表于 07-03 10:02 ?809次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)激活函數(shù)的作用

    起著至關(guān)重要的作用,它們可以增加網(wǎng)絡(luò)的非線性,提高網(wǎng)絡(luò)的表達(dá)能力,使網(wǎng)絡(luò)能夠?qū)W習(xí)到更加復(fù)雜的特征。本文將詳細(xì)介紹卷積神經(jīng)網(wǎng)絡(luò)中激活函數(shù)的作用、常見(jiàn)激活函數(shù)及其特點(diǎn),以及激活函數(shù)在網(wǎng)絡(luò)優(yōu)化中的應(yīng)用。 一、激活
    的頭像 發(fā)表于 07-03 09:18 ?1234次閱讀

    神經(jīng)網(wǎng)絡(luò)中的激活函數(shù)有哪些

    在神經(jīng)網(wǎng)絡(luò)中,激活函數(shù)是一個(gè)至關(guān)重要的組成部分,它決定了神經(jīng)元對(duì)于輸入信號(hào)的反應(yīng)方式,為神經(jīng)網(wǎng)絡(luò)引入了非線性因素,使得網(wǎng)絡(luò)能夠?qū)W習(xí)和處理復(fù)雜的模式。本文將詳細(xì)介紹神經(jīng)網(wǎng)絡(luò)中常用的激活函數(shù),包括其定義、特點(diǎn)、數(shù)學(xué)形式以及在神經(jīng)網(wǎng)絡(luò)
    的頭像 發(fā)表于 07-01 11:52 ?663次閱讀

    如何在idf工程中引入mdf WiFi-Mesh函數(shù)

    我原先在idf下開(kāi)發(fā)好的程序,如何引入mdf進(jìn)行開(kāi)發(fā)?需要用到WiFi-Mesh,看了下mdf下的例程是比較合適的,而idf下的wifi-mesh例程很粗略,想把mdf中的例程移植到我原來(lái)的idf工程里面去
    發(fā)表于 06-28 14:59

    inline關(guān)鍵字被優(yōu)化導(dǎo)致此類函數(shù)被布局在flash內(nèi),怎么處理?

    == 0));} 由于uart.c多處調(diào)用這個(gè)函數(shù),所以編譯器自作聰明地把它編譯成了非內(nèi)聯(lián)函數(shù)(意圖是減少代碼占用?),且elf能找到uart_ll_is_tx_idle標(biāo)號(hào)
    發(fā)表于 06-21 12:03

    IDF4.2.1的編譯器優(yōu)化bug導(dǎo)致panic怎么處理?

    == 0) && (status.st_utx_out == 0));} 它是一個(gè)inline函數(shù)。我們都認(rèn)為inline關(guān)鍵字,會(huì)告訴編譯器內(nèi)聯(lián)函數(shù),于是它的代碼
    發(fā)表于 06-21 10:55

    請(qǐng)問(wèn)STM32硬件I2C存在什么缺陷

    我看野火的庫(kù)函數(shù)開(kāi)發(fā)手冊(cè)里面感覺(jué)用I2C用的挺順的呀 為什么張洋卻說(shuō)STM32的I2C有缺陷 不推薦用 請(qǐng)問(wèn)下 各位在使用I2C的時(shí)候碰到過(guò)什么情況嗎 我怎么都沒(méi)感覺(jué)到I2C的缺陷 能否說(shuō)下這個(gè)
    發(fā)表于 05-16 07:46

    集PLC如何應(yīng)用于建筑的3D打印?

    集MC Pi-Prime模塊化PLC采用EtherCat作為通信協(xié)議,有助于實(shí)現(xiàn)快速的反應(yīng)時(shí)間和精確的定位控制,為自動(dòng)化工程師提供靈活的擴(kuò)展與集成,并縮短實(shí)施時(shí)間,助力建筑行業(yè)引入3D打印。
    的頭像 發(fā)表于 03-22 10:46 ?374次閱讀
    <b class='flag-5'>宏</b>集PLC如何應(yīng)用于建筑的3D打印?

    函數(shù)指針與回調(diào)函數(shù)的應(yīng)用實(shí)例

    通常我們說(shuō)的指針變量是指向一個(gè)整型、字符型或數(shù)組等變量,而函數(shù)指針是指向函數(shù)函數(shù)指針可以像一般函數(shù)一樣,用于調(diào)用函數(shù)、傳遞參數(shù)。
    的頭像 發(fā)表于 03-07 11:13 ?437次閱讀
    <b class='flag-5'>函數(shù)</b>指針與回調(diào)<b class='flag-5'>函數(shù)</b>的應(yīng)用實(shí)例

    嵌入式Linux C語(yǔ)言編程程序調(diào)試與定義

    在Linux使用gcc編譯程序的時(shí)候,對(duì)于調(diào)試的語(yǔ)句還具有一些特殊的語(yǔ)法。gcc編譯的過(guò)程中,會(huì)生成一些,可以使用這些分別打印當(dāng)前源文件的信息,主要內(nèi)容是當(dāng)前的文件、當(dāng)前運(yùn)行的函數(shù)和當(dāng)前的程序行。
    發(fā)表于 03-01 11:41 ?1121次閱讀

    內(nèi)聯(lián)函數(shù)定義 為什么需要內(nèi)聯(lián)函數(shù)

    inline關(guān)鍵字是C99標(biāo)準(zhǔn)的型關(guān)鍵字,其作用是將函數(shù)展開(kāi),把函數(shù)的代碼復(fù)制到每一個(gè)調(diào)用處。
    的頭像 發(fā)表于 02-19 12:20 ?597次閱讀
    主站蜘蛛池模板: 好大好硬好爽免费视频 | 午夜视频在线免费看 | 久久久久久国产精品免费免费 | 久久男人精品 | 色之综综| 天天在线天天综合网色 | 欧美在线天堂 | 嫩草影院久久国产精品 | 四只虎免费永久观看 | 播放毛片| 中文在线资源链接天堂 | 在线黄色.com | 亚洲欧美日本综合 | 免费观看视频高清www | 波多野结衣中文字幕教师 | 在线看黄网站 | 性欧美黑人xxxx | 永久在线观看www免费视频 | 一级特黄aaa大片 | 五月婷婷丁香久久 | 日本黄色视屏 | 毛片特黄| 国产一区二区三区免费大片天美 | 夜夜操狠狠干 | 在线观看免费视频一区 | 人人看人人干 | 在线天堂资源 | 美女淫| 丁香视频在线观看播放 | 一级做a爰片久久毛片鸭王 一级做a爰片久久毛片一 | 老师你好大好白好紧好硬 | 国产福利乳摇在线播放 | 中文在线三级中文字幕 | 美女扒开尿口给男人爽的视频 | 国产老头和美女在线观看 | 波多野结衣在线网址 | 女人双腿搬开让男人桶 | 狠狠躁夜夜躁人人躁婷婷视频 | 国产小视频在线看 | 天天插在线视频 | 97蜜桃|