吴忠躺衫网络科技有限公司

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

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

3天內不再提示

宏定義后面能不能加分號

學益得智能硬件 ? 來源:學益得智能硬件 ? 2025-01-06 16:35 ? 次閱讀

用define定義的宏,最后需不需要加分號?

#define SIZE   10


#defineSIZE10;

都已經是 2025 年了,居然還有同學問這樣的問題。

想要搞清楚要不要加分號,得搞清楚宏定義在C語言中處理方法。

編譯程序的時候,一共分為四個步驟,預處理、編譯、匯編、鏈接,我們說的宏定義,就發生在預處理階段。

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

預處理主要來處理'#'開頭的代碼,比如包含頭文件、宏定義、條件編譯等等。我們這里重點看下宏定義。

#include 


#defineSIZE   10


#ifndef
#define  SIZE   10
#endif

如果定義這樣的宏:

#define SIZE    10


intarray[SIZE] = {0};

預處理后,SIZE 會被直接替換成 10:

int array[10] = {0};

如果定義這樣的宏:

#defineSHOWprintf("helloworld
")


int main()
{
    SHOW;
}

預處理后,SHOW 會被直接替換成 printf:

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

如果加了分號,SIZE會被替換成 10 分號:

int array[10;] = {0};

很顯然,這是個語法錯誤。

不過對于這樣的函數,如果加了分號,替換后,也只是在語句后面多了一個分號:

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

在語法上沒什么問題。

宏定義在C語言中并不算是一條語句,所以也不應該加上分號,大部分情況下,加了分號都會出問題。

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

    關注

    180

    文章

    7614

    瀏覽量

    137702
  • 宏定義
    +關注

    關注

    0

    文章

    51

    瀏覽量

    9051
  • define
    +關注

    關注

    0

    文章

    16

    瀏覽量

    3767

原文標題:宏定義后面能不能加分號?

文章出處:【微信號:學益得智能硬件,微信公眾號:學益得智能硬件】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    C語言中結構體能不能相加

    C語言中,結構體能不能相加?
    的頭像 發表于 12-19 17:04 ?1349次閱讀
    C語言中結構體<b class='flag-5'>能不能</b>相加

    定時器回調函數能不能用ICACHE_FLASH_ATTR定義

    非 OS SDK 在中斷處理函數中,請勿使用任何 ICACHE_FLASH_ATTR 定義的函數。 請問: 1、定時器和hw定時器的回調函數是否在中斷處理函數里面被調用。定時器回調函數能不能調用
    發表于 07-22 06:33

    51單片機定義能不能定義某幾個連續的IO口

    51單片機定義能不能定義某幾個連續的IO口,比如P1的0~3為t1,P1的4~7為t2,要能單獨控制,不能直接
    發表于 04-08 14:15

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

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

    while循環后面大括號可以加分號

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

    電池能不能修復?

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

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

    光耦(TLP521-4)能不能轉換電壓?
    發表于 05-31 11:15 ?4313次閱讀

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

    “金融科技行業的最大風險就是跟不上變化。新技術來了,技術變革了,你能不能跟得上?你能不能跟得上業務的變化?”
    的頭像 發表于 08-26 17:27 ?4171次閱讀

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

     那么新能源汽車到底能不能買?內行人說出實情,后悔沒有早知道
    的頭像 發表于 07-30 09:59 ?4027次閱讀

    諧波治理到底能不能節電

    諧波治理到底能不能節電?”這是我們做電能質量行業經常會被問到的一個問題。隨著國家對節能減排項目的大力支持,有不少商業人士一擁而上加入到節能行業,想要分得節能市場的一杯羹。那么,通過諧波治理到底能不能實現節能的效果呢?
    發表于 04-23 15:50 ?3659次閱讀

    大型輥壓機軸磨損能不能現場維修?

    大型輥壓機軸磨損能不能現場維修?
    發表于 06-23 15:35 ?1次下載

    指針能不能作為循環變量?

    指針能不能作為循環變量?
    的頭像 發表于 02-16 18:11 ?1079次閱讀

    物聯網流量卡到底能不能用?

    物聯網流量卡到底能不能用?
    的頭像 發表于 08-28 09:40 ?6502次閱讀
    物聯網流量卡到底<b class='flag-5'>能不能</b>用?

    拼接屏能不能觸屏操作?

    拼接屏能不能直接觸屏操作,小編回答可以的,實際上很多客戶購買拼接屏時都會提出拼接屏能不能加觸摸的功能?我們回復是可以的,那是一種怎樣的原理呢? 拼接屏一般是用來大屏展示,用來播放文字、圖像等內容
    的頭像 發表于 09-11 14:36 ?5590次閱讀

    直流電源到底能不能驅動交流燈泡發光?

    我在網上經常看到有網友在問直流電源到底能不能驅動交流燈泡發光?事實勝于雄辯,這次專門準備了一盒干電池,來實際演示一下,看看能不能發光。
    的頭像 發表于 11-13 15:07 ?3987次閱讀
    直流電源到底<b class='flag-5'>能不能</b>驅動交流燈泡發光?
    大发888备用网| 百家乐官网打印机分析| 亚洲百家乐新全讯网| 百家乐官网视频对对碰| 大发888 王博| 百家乐1元投注| 百家乐官网玩的技巧| 宣化县| 大发888开户注册平台| 赌博百家乐赢钱方法| 百家乐官网必胜绝| 网上百家乐官网平台下载| 保时捷娱乐| 大发888真钱娱乐城下载| 博天堂百家乐的玩法技巧和规则| 真人百家乐出千| 真人百家乐官网轮盘| 百家乐官网如何看牌| 菲比国际娱乐| 德州扑克官网| 环球百家乐的玩法技巧和规则| 保险百家乐怎么玩| 余干县| 大发888网址怎么找| 网上百家乐乐代理| 博彩百家乐带连线走势图| gt百家乐平台| 做生意门朝哪个方向好| 云鼎百家乐官网的玩法技巧和规则 | 名人百家乐的玩法技巧和规则| 缅甸百家乐博彩真假| 速博百家乐官网的玩法技巧和规则| 百家乐官网台布哪里有卖| 乐九百家乐官网现金网| 保单百家乐官网技巧| 庄浪县| 枝江市| 大发888娱乐大发体育| 太阳城线上真人娱乐| 大发888娱乐城优惠码lm0| 大发888娱乐城官|