用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文章
7646浏览量
146108 -
宏定义
+关注
关注
0文章
51浏览量
9446 -
define
+关注
关注
0文章
16浏览量
4150
原文标题:宏定义后面能不能加分号?
文章出处:【微信号:学益得智能硬件,微信公众号:学益得智能硬件】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
热点推荐
定时器回调函数能不能用ICACHE_FLASH_ATTR定义?
非 OS SDK 在中断处理函数中,请勿使用任何 ICACHE_FLASH_ATTR 定义的函数。
请问:
1、定时器和hw定时器的回调函数是否在中断处理函数里面被调用。定时器回调函数能不能调用
发表于 07-22 06:33
谐波治理到底能不能节电
谐波治理到底能不能节电?”这是我们做电能质量行业经常会被问到的一个问题。随着国家对节能减排项目的大力支持,有不少商业人士一拥而上加入到节能行业,想要分得节能市场的一杯羹。那么,通过谐波治理到底能不能实现节能的效果呢?
发表于 04-23 15:50
•4639次阅读
拼接屏能不能触屏操作?
拼接屏能不能直接触屏操作,小编回答可以的,实际上很多客户购买拼接屏时都会提出拼接屏能不能加触摸的功能?我们回复是可以的,那是一种怎样的原理呢? 拼接屏一般是用来大屏展示,用来播放文字、图像等内容
宏定义后面能不能加分号
评论