溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

C語言宏定義怎么使用

發(fā)布時(shí)間:2022-04-21 13:42:22 來源:億速云 閱讀:154 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要講解了“C語言宏定義怎么使用”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“C語言宏定義怎么使用”吧!

一、C語言中函數(shù)的“缺陷”

實(shí)參和形參之間僅僅是值傳遞,因此,函數(shù)中無法直接改變實(shí)參。

二、再次理解函數(shù)

函數(shù)是一種代碼復(fù)用的手段

  • 把實(shí)現(xiàn)某個(gè)功能的代碼片段進(jìn)行封裝(當(dāng)作一個(gè)整體)

  • 給這個(gè)代碼片段一個(gè)合適的名字(通過名字使用代碼)

  • 定義參數(shù)(定義代碼片段需要處理的問題)

三、C語言中的宏

  • 宏是C語言中代碼復(fù)用的補(bǔ)充方式

  • 宏定義語法:#define MACRO(param) code_segment

  • 宏使用語法:MACRO(num);

例如:

#define ADD(a,b) a + b
int main()
{
    int z = ADD(1,2);
    printf("z = %d\n", z);
    return 0;
}

四、宏與函數(shù)的不同

  • 宏不是函數(shù),使用宏沒有函數(shù)調(diào)用的過程

  • 函數(shù)調(diào)用先傳遞參數(shù)值,然后跳轉(zhuǎn)執(zhí)行函數(shù)體,最后返回

  • 使用宏只是單純“代碼復(fù)制粘貼”,然后替換參數(shù)

  • 同一個(gè)函數(shù),無論調(diào)用多少次,都執(zhí)行相同的函數(shù)體代碼

  • 同一個(gè)宏,每次使用都會(huì)“復(fù)制粘貼”相同代碼

五、編譯器組成簡(jiǎn)介

  • 預(yù)處理模塊:處理所有宏以及#開頭的語句(復(fù)制粘貼替換)

  • 編譯模塊:將C程序翻譯成二進(jìn)制程序

  • 鏈接模塊:將二進(jìn)制程序組合成可執(zhí)行程序

六、宏使用示例

用一個(gè)簡(jiǎn)單的交換兩個(gè)數(shù)的值作為例子:

#include <stdio.h>
#define SWAP(a, b)  {int t = a; a = b; b = t;}
int main()
{
    int x = 1;
    int y = 2;
    SWAP(x, y);   // {int t = x; x = y; y = t;}
    printf("x = %d, y = %d\n", x, y);
    return 0;
}

下面為輸出結(jié)果:

C語言宏定義怎么使用

七、再論宏常量

#define NAME value

  • 預(yù)處理模塊將代碼中出現(xiàn)的NAME標(biāo)識(shí)符替換為value

  • 因此,宏常量在本質(zhì)上與字面量相同(真正意義的常量)

感謝各位的閱讀,以上就是“C語言宏定義怎么使用”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)C語言宏定義怎么使用這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI