你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

#define宏定义的疑惑

[复制链接]
cruiser0129a 提问时间:2019-12-25 11:32 /
#define Hang_00_L GPIO_WriteLow(Hang_00_PORT,Hang_00_PIN)
#define LED1_L GPIO_WriteLow(LED1_PORT,LED1_PIN);
书本上描述#define宏定义不能以分号结束,但第二行#define 确实以分号结束也是正确,请大神指点迷津,谢谢!
收藏 评论6 发布时间:2019-12-25 11:32

举报

6个回答
流水源 回答时间:2019-12-25 11:49:51
可以分号结束的。宏定义很强大的。

不能的应该是程序里面用到宏定义的地方不能有分号。
例如:if(宏定义表达式){}    //此时括号内宏定义不能有分号

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

toofree 回答时间:2019-12-25 11:51:52
#define,按正常套路,的确是不能以分号结束的。
万一以分号结束,语法检查有时也不为错,但使用时需要注意。
#define 在编译的时候做了宏替换,见到LED1_L的内容,直接替换为“GPIO_WriteLow(LED1_PORT,LED1_PIN);”,具体是否有影响,你把后面的内容,手动替换到程序中出现过LED1_L的内容,就可以看出来。

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

阳光-2042582 回答时间:2019-12-25 13:37:01
谁说的不可以用分号结束,书上说的未必是对的,多看看C语言标准
cruiser0129a 回答时间:2019-12-25 13:43:57
toofree 发表于 2019-12-25 11:51
#define,按正常套路,的确是不能以分号结束的。
万一以分号结束,语法检查有时也不为错,但使用时需要注意 ...

谢谢!
cruiser0129a 回答时间:2019-12-25 13:44:21
流水源 发表于 2019-12-25 11:49
可以分号结束的。宏定义很强大的。

不能的应该是程序里面用到宏定义的地方不能有分号。

谢谢!

所属标签

相似问题

关于 意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
13245底部标题123相同标题
12底部标题123相同标题
33333底部标题123相同序号
3435底部标题-无链接
关注我们
st-img 微信公众号
st-img 手机版