用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語言
+關注
關注
183文章
7644瀏覽量
145580 -
宏定義
+關注
關注
0文章
51瀏覽量
9412 -
define
+關注
關注
0文章
16瀏覽量
4127
原文標題:宏定義后面能不能加分號?
文章出處:【微信號:學益得智能硬件,微信公眾號:學益得智能硬件】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
熱點推薦
定時器回調函數能不能用ICACHE_FLASH_ATTR定義?
非 OS SDK 在中斷處理函數中,請勿使用任何 ICACHE_FLASH_ATTR 定義的函數。
請問:
1、定時器和hw定時器的回調函數是否在中斷處理函數里面被調用。定時器回調函數能不能調用
發表于 07-22 06:33
諧波治理到底能不能節電
諧波治理到底能不能節電?”這是我們做電能質量行業經常會被問到的一個問題。隨著國家對節能減排項目的大力支持,有不少商業人士一擁而上加入到節能行業,想要分得節能市場的一杯羹。那么,通過諧波治理到底能不能實現節能的效果呢?
發表于 04-23 15:50
?4510次閱讀
拼接屏能不能觸屏操作?
拼接屏能不能直接觸屏操作,小編回答可以的,實際上很多客戶購買拼接屏時都會提出拼接屏能不能加觸摸的功能?我們回復是可以的,那是一種怎樣的原理呢? 拼接屏一般是用來大屏展示,用來播放文字、圖像等內容
宏定義后面能不能加分號
評論