C语言中,分号不加为什么不报错?

[复制链接]
1646|13
手机看帖
扫描二维码
随时随地手机跟帖
c555|  楼主 | 2024-4-13 11:05 | 显示全部楼层 |阅读模式
  以下写的C程序,单片机IO口定义的,定义为GFF_ON,主程序中,主程序中写GFF_ON,不加分号,应该是报错才对,但我的编译器不报错了,重启软件
不管用,重启电脑不管用。但又的IO口也是这么定义的,你不加分号就报错,奇怪

#define GFF_ON            GPIO_SetBits(GPIOA, GPIO_Pin_11);          //

....
...

GFF_ON

使用特权

评论回复

相关帖子

LcwSwust| | 2024-4-13 13:44 | 显示全部楼层
把宏定义展开,确实可以不用加分号了呀。
你把报错的代码发上来呀。

使用特权

评论回复
cctv19881023| | 2024-4-13 18:42 | 显示全部楼层
#define 表示前后是完全等价的,你的GPIO_SetBits(GPIOA, GPIO_Pin_11); 加了分号,GFF_ON里面再加分号反而会报错

使用特权

评论回复
评论
cctv19881023 2024-4-15 10:47 回复TA
@xmar :其实再加分号也不一定会报错,相当于多了一条空指令,keil里面有没有问题我就不清楚了 
xmar 2024-4-14 15:27 回复TA
正解————你的GPIO_SetBits(GPIOA, GPIO_Pin_11); 加了分号,GFF_ON里面再加分号反而会报错 
zchong| | 2024-4-13 21:39 | 显示全部楼层
没理由报错

使用特权

评论回复
coody| | 2024-4-13 23:49 | 显示全部楼层
楼主,你那是宏定义,宏定义不用加分号。

使用特权

评论回复
xmar| | 2024-4-14 15:32 | 显示全部楼层
楼主,你的宏定义已经加了分号,所以应用宏时不用再加分号了。

如果定义宏改为:

#define GFF_ON            GPIO_SetBits(GPIOA, GPIO_Pin_11)        //

应用GFF_ON时就要加分号,否则,会报错。

使用特权

评论回复
mbutterfly| | 2024-4-15 08:29 | 显示全部楼层
宏定义本来不用加分号。

使用特权

评论回复
qintian0303| | 2024-4-15 10:47 | 显示全部楼层
宏定义里面有肯定就可以不加了,到时候哦替换后没有分号就无法结束

使用特权

评论回复
tobot| | 2024-4-15 13:14 | 显示全部楼层
cctv19881023 发表于 2024-4-13 18:42
#define 表示前后是完全等价的,你的GPIO_SetBits(GPIOA, GPIO_Pin_11); 加了分号,GFF_ON里面再加分号反而 ...

空分号也没关系啊

使用特权

评论回复
shenxiaolin| | 2024-4-15 14:38 | 显示全部楼层
宏定义可以不加分号啊,但是你在引用的时候需要加啊……

使用特权

评论回复
haoyupei| | 2024-4-18 20:26 | 显示全部楼层
问题出现的后面的// 宏后面的;被 //;给注释了

使用特权

评论回复
24kdewhite| | 2024-4-23 14:39 | 显示全部楼层
语法没搞明白,找本书看看宏相关章节

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

264

主题

556

帖子

3

粉丝