日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

    文章

    4422

    瀏覽量

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

    關(guān)注

    30

    文章

    4977

    瀏覽量

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

    關(guān)注

    1

    文章

    1673

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

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

    1. 函數(shù)介紹 函數(shù),即包含多條語(yǔ)句的定義,其通常為某一被頻繁調(diào)用的功能的語(yǔ)句封裝,且不想通過(guò)函數(shù)
    發(fā)表于 12-29 07:34

    內(nèi)聯(lián)函數(shù)介紹

    的消耗更小。如果參數(shù)是常量,編譯器可以提供更好的優(yōu)化。 內(nèi)聯(lián)函數(shù)缺陷是如果調(diào)用的地方很多,代碼的體積會(huì)變得很大。這主要取決于函數(shù)本身的大小和調(diào)用的次數(shù)。 僅對(duì)重要的
    發(fā)表于 12-12 07:08

    C語(yǔ)言的編程技巧

    1、定義使用do{...}while(0)?:當(dāng)定義中包含多條語(yǔ)句時(shí),使用do{...}while(0)可以避免語(yǔ)句嵌套問(wèn)題,確保的獨(dú)立性。? ?2、靈活數(shù)組成員?:C99標(biāo)準(zhǔn)允許結(jié)構(gòu)體的最后
    發(fā)表于 11-27 06:46

    控制流和函數(shù)調(diào)用的精細(xì)調(diào)整

    特性,避免不必要的計(jì)算。 函數(shù)調(diào)用涉及開(kāi)銷,因?yàn)樗枰4娈?dāng)前執(zhí)行環(huán)境并跳轉(zhuǎn)到新的執(zhí)行環(huán)境。減少函數(shù)調(diào)用,尤其是在頻繁執(zhí)行的循環(huán)中,可以顯著提高性能。 對(duì)于簡(jiǎn)單且頻繁調(diào)用的函數(shù),使用內(nèi)聯(lián)
    發(fā)表于 11-14 06:32

    inline ASM(內(nèi)聯(lián)匯編)的細(xì)節(jié)分享

    內(nèi)聯(lián)匯編? 基本的語(yǔ)法 asm volatile (\"instruction list\":OUTPUT:INPUT:(clobber/modify)); 如果
    發(fā)表于 10-31 09:11

    內(nèi)聯(lián)匯編的妙用

    它數(shù)據(jù)相關(guān),于是借助循環(huán)變量i,做累加操作,但結(jié)果還是不對(duì)。 3、內(nèi)聯(lián)匯編(結(jié)果正確) 一覺(jué)醒來(lái),突然想到內(nèi)聯(lián)匯編,決定一試:既然編譯器不能如我所愿,那可以把想要的部分先自己編譯。各種架構(gòu)在線編譯
    發(fā)表于 10-31 06:28

    簡(jiǎn)單的內(nèi)聯(lián)匯編介紹

    ,只能采用內(nèi)嵌匯編指令(CSR指令)的方式,才能對(duì) CSR 寄存器進(jìn)行操作。 內(nèi)聯(lián)匯編程序 內(nèi)斂匯編函數(shù)格式: asm volatile ( 匯編指令列表 : 輸出操作數(shù) // 非必需 : 輸入操作數(shù)
    發(fā)表于 10-30 08:04

    RISC-V的工具鏈GCC內(nèi)聯(lián)匯編

    GCC內(nèi)聯(lián)匯編語(yǔ)法規(guī)則如下: asmvolatile( 匯編指令列表 :輸出操作數(shù) :輸入操作數(shù) :可能影響的寄存器或存儲(chǔ)器); 以下分別詳細(xì)介紹: 1.關(guān)鍵詞“asm”是GCC的關(guān)鍵詞,表示進(jìn)行內(nèi)聯(lián)
    發(fā)表于 10-30 06:59

    計(jì)算程序執(zhí)行指令數(shù)的函數(shù)實(shí)現(xiàn)

    __RV_CSR_READ是一個(gè)定義,采用內(nèi)聯(lián)匯編使用csrr指令 也可查看反匯編代碼: 4、查手冊(cè)可知,csrr指令是用來(lái)讀CSR寄存器的值 5、而minstreth和minstret寄存器介紹如下
    發(fā)表于 10-28 06:27

    GCC內(nèi)聯(lián)匯編

    GCC內(nèi)聯(lián)匯編 在蜂鳥(niǎo)內(nèi)核的NICE協(xié)處理器擴(kuò)展demo的insn.h文件中存在下面一段指令,用于定義對(duì)協(xié)處理器調(diào)用指令,demo中協(xié)處理器支持三條指令:lbuf從內(nèi)存中l(wèi)oad數(shù)據(jù)至行數(shù)據(jù)緩存
    發(fā)表于 10-24 07:46

    通過(guò)內(nèi)聯(lián)匯編調(diào)用乘法指令mulh\\mulhsu\\mulhu

    mulh、mulhu與mulhsu指令,不能直接驗(yàn)證,需要其他方法。因此,我們想到了在C語(yǔ)言中嵌入內(nèi)聯(lián)匯編,分別生成三條指令的接口函數(shù),之后便只需在C語(yǔ)言中調(diào)用者三中函數(shù)便可執(zhí)行mulh、mulhu
    發(fā)表于 10-24 06:52

    C語(yǔ)言中的內(nèi)聯(lián)函數(shù)

    在C編程中,內(nèi)聯(lián)函數(shù)都用于避免函數(shù)調(diào)用的開(kāi)銷并編寫(xiě)可復(fù)用的邏輯部分,但它們?cè)诠ぷ鞣绞胶桶踩苑矫娲嬖陲@著差異。
    的頭像 發(fā)表于 07-25 15:10 ?2104次閱讀
    C語(yǔ)言中的<b class='flag-5'>內(nèi)聯(lián)</b><b class='flag-5'>函數(shù)</b>與<b class='flag-5'>宏</b>

    MSP430常用內(nèi)聯(lián)函數(shù)說(shuō)明

    電子發(fā)燒友網(wǎng)站提供《MSP430常用內(nèi)聯(lián)函數(shù)說(shuō)明.docx》資料免費(fèi)下載
    發(fā)表于 06-05 17:20 ?0次下載

    Vicor助力發(fā)打造主動(dòng)懸架電源系統(tǒng)

    廈門發(fā)電聲股份有限公司(發(fā))打造業(yè)內(nèi)性能卓越的主動(dòng)懸架電源系統(tǒng),旨在將長(zhǎng)期以來(lái)僅見(jiàn)于豪華車型的功能引入中端車型。發(fā)成功突破困擾知名汽車技術(shù)供應(yīng)商幾十年的技術(shù)瓶頸,在滿足主動(dòng)懸架系
    的頭像 發(fā)表于 06-04 15:24 ?1370次閱讀

    迅為RK3568開(kāi)發(fā)板驅(qū)動(dòng)指南GPIO子系統(tǒng)GPIO子系統(tǒng)API函數(shù)引入

    迅為RK3568開(kāi)發(fā)板驅(qū)動(dòng)指南GPIO子系統(tǒng)GPIO子系統(tǒng)API函數(shù)引入
    的頭像 發(fā)表于 05-29 14:05 ?1233次閱讀
    迅為RK3568開(kāi)發(fā)板驅(qū)動(dòng)指南GPIO子系統(tǒng)GPIO子系統(tǒng)API<b class='flag-5'>函數(shù)</b>的<b class='flag-5'>引入</b>
    榆树市| 西盟| 剑阁县| 淮阳县| 广河县| 清苑县| 绍兴县| 洛阳市| 北票市| 海林市| 樟树市| 台湾省| 桃江县| 井研县| 奉贤区| 内江市| 华宁县| 五寨县| 乌拉特后旗| 胶州市| 房山区| 崇信县| 平谷区| 芒康县| 新丰县| 东丰县| 柘城县| 陇西县| 桐庐县| 尼勒克县| 南溪县| 和田市| 彰武县| 勃利县| 五河县| 阿克陶县| 凤翔县| 吉林市| 和硕县| 隆安县| 垦利县|