用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文章
7608瀏覽量
137084 -
宏定義
+關注
關注
0文章
51瀏覽量
9035 -
define
+關注
關注
0文章
16瀏覽量
3757
原文標題:宏定義后面能不能加分號?
文章出處:【微信號:學益得智能硬件,微信公眾號:學益得智能硬件】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論