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

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

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

宏定義后面能不能加分號(hào)

學(xué)益得智能硬件 ? 來(lái)源:學(xué)益得智能硬件 ? 2025-01-06 16:35 ? 次閱讀

用define定義的宏,最后需不需要加分號(hào)?

#define SIZE   10


#defineSIZE10;

都已經(jīng)是 2025 年了,居然還有同學(xué)問(wèn)這樣的問(wèn)題。

想要搞清楚要不要加分號(hào),得搞清楚宏定義在C語(yǔ)言中處理方法。

編譯程序的時(shí)候,一共分為四個(gè)步驟,預(yù)處理、編譯、匯編、鏈接,我們說(shuō)的宏定義,就發(fā)生在預(yù)處理階段。

gcc -E test.c -o test.i
gcc-Stest.i-otest.s
gcc-ctest.s-otest.o
gcc test.o -o test

預(yù)處理主要來(lái)處理'#'開頭的代碼,比如包含頭文件、宏定義、條件編譯等等。我們這里重點(diǎn)看下宏定義。

#include 


#defineSIZE   10


#ifndef
#define  SIZE   10
#endif

如果定義這樣的宏:

#define SIZE    10


intarray[SIZE] = {0};

預(yù)處理后,SIZE 會(huì)被直接替換成 10:

int array[10] = {0};

如果定義這樣的宏:

#defineSHOWprintf("helloworld
")


int main()
{
    SHOW;
}

預(yù)處理后,SHOW 會(huì)被直接替換成 printf:

int main()
{
    printf("helloworld
");
}

如果加了分號(hào),SIZE會(huì)被替換成 10 分號(hào):

int array[10;] = {0};

很顯然,這是個(gè)語(yǔ)法錯(cuò)誤。

不過(guò)對(duì)于這樣的函數(shù),如果加了分號(hào),替換后,也只是在語(yǔ)句后面多了一個(gè)分號(hào):

int main()
{
    printf("helloworld
");;
}

在語(yǔ)法上沒(méi)什么問(wèn)題。

宏定義在C語(yǔ)言中并不算是一條語(yǔ)句,所以也不應(yīng)該加上分號(hào),大部分情況下,加了分號(hào)都會(huì)出問(wèn)題。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(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)投訴
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    180

    文章

    7608

    瀏覽量

    137113
  • 宏定義
    +關(guān)注

    關(guān)注

    0

    文章

    51

    瀏覽量

    9037
  • define
    +關(guān)注

    關(guān)注

    0

    文章

    16

    瀏覽量

    3757

原文標(biāo)題:宏定義后面能不能加分號(hào)?

文章出處:【微信號(hào):學(xué)益得智能硬件,微信公眾號(hào):學(xué)益得智能硬件】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    C語(yǔ)言中結(jié)構(gòu)體能不能相加

    C語(yǔ)言中,結(jié)構(gòu)體能不能相加?
    的頭像 發(fā)表于 12-19 17:04 ?1311次閱讀
    C語(yǔ)言中結(jié)構(gòu)體<b class='flag-5'>能不能</b>相加

    定時(shí)器回調(diào)函數(shù)能不能用ICACHE_FLASH_ATTR定義?

    非 OS SDK 在中斷處理函數(shù)中,請(qǐng)勿使用任何 ICACHE_FLASH_ATTR 定義的函數(shù)。 請(qǐng)問(wèn): 1、定時(shí)器和hw定時(shí)器的回調(diào)函數(shù)是否在中斷處理函數(shù)里面被調(diào)用。定時(shí)器回調(diào)函數(shù)能不能調(diào)用
    發(fā)表于 07-22 06:33

    51單片機(jī)定義能不能定義某幾個(gè)連續(xù)的IO口

    51單片機(jī)定義能不能定義某幾個(gè)連續(xù)的IO口,比如P1的0~3為t1,P1的4~7為t2,要能單獨(dú)控制,不能直接
    發(fā)表于 04-08 14:15

    這個(gè)電路圖能不能給我解釋下后面llc是如何工作的

    這個(gè)電路圖能不能給我解釋下后面llc是如何工作的最好能再解釋下全圖是如何工作的 大恩不言謝!
    發(fā)表于 05-06 16:09

    while循環(huán)后面大括號(hào)可以加分號(hào)?

    While(1){};?? 后面可以加分號(hào)?
    發(fā)表于 03-24 01:49

    電池能不能修復(fù)?

    電池能不能修復(fù)? 電池修復(fù)作為一個(gè)新生事物,許多人對(duì)它不了解,也有許多人對(duì)它一知半解。那么電池到底能不能修復(fù)呢?
    發(fā)表于 11-23 10:40 ?1100次閱讀

    光耦(TLP521-4)能不能轉(zhuǎn)換電壓?

    光耦(TLP521-4)能不能轉(zhuǎn)換電壓?
    發(fā)表于 05-31 11:15 ?4306次閱讀

    恒生電子總裁劉曙峰:一個(gè)特別重要的挑戰(zhàn)就是能不能跟得上這個(gè)變化

    “金融科技行業(yè)的最大風(fēng)險(xiǎn)就是跟不上變化。新技術(shù)來(lái)了,技術(shù)變革了,你能不能跟得上?你能不能跟得上業(yè)務(wù)的變化?”
    的頭像 發(fā)表于 08-26 17:27 ?4148次閱讀

    新能源的車到底能不能買_新能源汽車的利與弊

     那么新能源汽車到底能不能買??jī)?nèi)行人說(shuō)出實(shí)情,后悔沒(méi)有早知道
    的頭像 發(fā)表于 07-30 09:59 ?3989次閱讀

    諧波治理到底能不能節(jié)電

    諧波治理到底能不能節(jié)電?”這是我們做電能質(zhì)量行業(yè)經(jīng)常會(huì)被問(wèn)到的一個(gè)問(wèn)題。隨著國(guó)家對(duì)節(jié)能減排項(xiàng)目的大力支持,有不少商業(yè)人士一擁而上加入到節(jié)能行業(yè),想要分得節(jié)能市場(chǎng)的一杯羹。那么,通過(guò)諧波治理到底能不能實(shí)現(xiàn)節(jié)能的效果呢?
    發(fā)表于 04-23 15:50 ?3606次閱讀

    大型輥壓機(jī)軸磨損能不能現(xiàn)場(chǎng)維修?

    大型輥壓機(jī)軸磨損能不能現(xiàn)場(chǎng)維修?
    發(fā)表于 06-23 15:35 ?1次下載

    指針能不能作為循環(huán)變量?

    指針能不能作為循環(huán)變量?
    的頭像 發(fā)表于 02-16 18:11 ?1052次閱讀

    物聯(lián)網(wǎng)流量卡到底能不能用?

    物聯(lián)網(wǎng)流量卡到底能不能用?
    的頭像 發(fā)表于 08-28 09:40 ?6386次閱讀
    物聯(lián)網(wǎng)流量卡到底<b class='flag-5'>能不能</b>用?

    拼接屏能不能觸屏操作?

    拼接屏能不能直接觸屏操作,小編回答可以的,實(shí)際上很多客戶購(gòu)買拼接屏?xí)r都會(huì)提出拼接屏能不能加觸摸的功能?我們回復(fù)是可以的,那是一種怎樣的原理呢? 拼接屏一般是用來(lái)大屏展示,用來(lái)播放文字、圖像等內(nèi)容
    的頭像 發(fā)表于 09-11 14:36 ?5499次閱讀

    直流電源到底能不能驅(qū)動(dòng)交流燈泡發(fā)光?

    我在網(wǎng)上經(jīng)??吹接芯W(wǎng)友在問(wèn)直流電源到底能不能驅(qū)動(dòng)交流燈泡發(fā)光?事實(shí)勝于雄辯,這次專門準(zhǔn)備了一盒干電池,來(lái)實(shí)際演示一下,看看能不能發(fā)光。
    的頭像 發(fā)表于 11-13 15:07 ?3759次閱讀
    直流電源到底<b class='flag-5'>能不能</b>驅(qū)動(dòng)交流燈泡發(fā)光?