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

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

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

宏和函數(shù)到底有什么區(qū)別

Wildesbeast ? 來源:未知 ? 作者:算法集市 ? 2020-02-22 17:32 ? 次閱讀

這篇介紹宏和函數(shù)的區(qū)別。

宏是C語言預處理命令的一種。所謂宏定義,就是用一個標識符來表示一個字符串,如果在后面的代碼中出現(xiàn)了該標識符,那么就全部替換成指定的字符串。其形式如下:

#define 宏名稱 替換文本

宏和函數(shù)的區(qū)別如下:

宏做的是簡單的字符串替換(注意是字符串的替換,不是其他類型參數(shù)的替換),而函數(shù)的參數(shù)的傳遞,參數(shù)是有數(shù)據(jù)類型的,可以是各種各樣的類型;

宏的參數(shù)替換是不經(jīng)計算而直接處理的,而函數(shù)調(diào)用是將實參的值傳遞給形參;

宏占用的是編譯的時間,而函數(shù)占用的是執(zhí)行時的時間。即宏是在編譯之前進行的,先用宏體替換宏名,然后再編譯;而函數(shù)是編譯之后,在執(zhí)行時,才調(diào)用的;

宏的參數(shù)是不占內(nèi)存空間的,因為只是做字符串的替換,而函數(shù)調(diào)用時的參數(shù)傳遞則是具體變量之間的信息傳遞,形參作為函數(shù)的局部變量,是占用內(nèi)存的;

函數(shù)的調(diào)用是需要付出一定的時空開銷的,因為系統(tǒng)在調(diào)用函數(shù)時,要保留現(xiàn)場,然后轉(zhuǎn)入被調(diào)用函數(shù)去執(zhí)行,調(diào)用完,再返回主調(diào)函數(shù),此時再恢復現(xiàn)場,這些操作在宏中是沒有的。

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

    關注

    180

    文章

    7595

    瀏覽量

    135924
  • 函數(shù)
    +關注

    關注

    3

    文章

    4286

    瀏覽量

    62337
  • 代碼
    +關注

    關注

    30

    文章

    4728

    瀏覽量

    68250
收藏 人收藏

    評論

    相關推薦

    功放和運放到底什么區(qū)別

    想請問一下功放和運放到底什么區(qū)別,感覺只要接一個小負載,運放的輸出電流也可以很大啊?到底有什么區(qū)別
    發(fā)表于 09-10 07:00

    ARM Cortex-M0與Cortex-M0+到底有什么區(qū)別

    ARM Cortex-M0與Cortex-M0+到底有什么區(qū)別
    發(fā)表于 01-04 23:15

    同時DSP2812的源文件,命名不同,到底有什么區(qū)別?

    同時DSP2812的源文件,命名不同,到底有什么區(qū)別?新建DSP工程時,到底用那種文件呢?講究嗎?
    發(fā)表于 04-07 12:57

    LED恒壓電源和恒流電源到底有什么區(qū)別

    LED恒壓電源和恒流電源到底有什么區(qū)別?
    發(fā)表于 12-07 14:53

    乘法器與調(diào)制器到底有什么區(qū)別?

    乘法器與調(diào)制器到底有什么區(qū)別?調(diào)制函數(shù)的建模方法是什么?
    發(fā)表于 04-09 06:33

    USB 3.0和USB 2.0到底有什么區(qū)別呢?

    圖文講解USB 3.0和USB 2.0到底有什么區(qū)別呢?
    發(fā)表于 05-19 07:12

    KEIL、uVision、MDK、KEIL C51、RealView它們到底有什么區(qū)別?

    KEIL、uVision、MDK、KEIL C51、RealView它們到底有什么區(qū)別,又有什么聯(lián)系?
    發(fā)表于 07-01 09:08

    FPGA和CPLD到底有什么區(qū)別?求具體例子說明

    FPGA和CPLD到底有什么區(qū)別,還有VHDL,一直分不清他們什么差別。求具體例子說明
    發(fā)表于 04-23 11:49

    ARM和DSP到底有什么區(qū)別?

    現(xiàn)在在學ARM,想知道ARM和DSP到底有什么區(qū)別?為什么有些地方用DSP有些用ARM
    發(fā)表于 10-19 07:20

    C語言函數(shù)中的傳值和傳指針到底有什么區(qū)別

    我們可能聽過C語言中的傳值和傳指針,在其他語言中,也有傳引用一說,那么他們到底有什么區(qū)別呢?如果你還不能準確地分辨,就該好好了解一下了。
    的頭像 發(fā)表于 09-08 10:14 ?5024次閱讀

    CAN通訊中摩托羅拉格式與英特爾格式到底有什么區(qū)別

    本文檔的主要內(nèi)容詳細介紹的是CAN通訊中摩托羅拉格式與英特爾格式到底有什么區(qū)別
    發(fā)表于 03-03 08:00 ?23次下載
    CAN通訊中摩托羅拉格式與英特爾格式<b class='flag-5'>到底有</b><b class='flag-5'>什么區(qū)別</b>

    單端與差異數(shù)據(jù)傳輸到底有什么區(qū)別

    電子發(fā)燒友網(wǎng)站提供《單端與差異數(shù)據(jù)傳輸到底有什么區(qū)別.pdf》資料免費下載
    發(fā)表于 11-26 01:18 ?16次下載
    單端與差異數(shù)據(jù)傳輸<b class='flag-5'>到底有</b><b class='flag-5'>什么區(qū)別</b>

    智能照明和傳統(tǒng)照明的系統(tǒng)到底有什么區(qū)別

    電子發(fā)燒友網(wǎng)站提供智能照明和傳統(tǒng)照明的系統(tǒng)到底有什么區(qū)別資料免費下載
    發(fā)表于 11-26 06:41 ?26次下載

    FPC與傳統(tǒng)PCB到底有什么區(qū)別.zip

    FPC與傳統(tǒng)PCB到底有什么區(qū)別
    發(fā)表于 03-01 15:37 ?4次下載

    RTOS與Linux到底有什么區(qū)別

    很多做嵌入式開發(fā)的小伙伴都存在這樣的疑惑:RTOS與Linux到底有什么區(qū)別?
    的頭像 發(fā)表于 10-29 09:53 ?244次閱讀