金牌会员
 
- 积分
- 1289
- 金钱
- 1289
- 注册时间
- 2014-6-15
- 在线时间
- 143 小时
|
1金钱
#define OPT6_ON GPIO_ResetBits(GPIOC,GPIO_Pin_5)
#define OPT6_OFF GPIO_SetBits(GPIOC,GPIO_Pin_5)
#define OPT7_ON GPIO_ResetBits(GPIOB,GPIO_Pin_0)
#define OPT7_OFF GPIO_SetBits(GPIOB,GPIO_Pin_0)
#define OPT5_ON GPIO_ResetBits(GPIOC,GPIO_Pin_3)
#define OPT5_OFF GPIO_SetBits(GPIOC,GPIO_Pin_3)
#define OPT4_ON GPIO_ResetBits(GPIOC,GPIO_Pin_2)
#define OPT4_OFF GPIO_SetBits(GPIOC,GPIO_Pin_2)
如上,我定义了几个IO操作相关的共定义
现在想在定义一个宏实现一下操作
OPT7_OFF;
OPT6_OFF;
OPT5_OFF;
OPT4_OFF;
我定义的宏如下
#define ALLOFF (OPT7_OFF;\
OPT6_OFF;\
OPT5_OFF;\
OPT4_OFF;)
但是我发现当调用ALLOFF;的时候就会报错 很奇怪
后来改成
#define ALLOFF {OPT7_OFF;\
OPT6_OFF;\
OPT5_OFF;\
OPT4_OFF;} 就可以了
这是为什么呢
|
最佳答案
查看完整内容[请看2#楼]
不是调用时出错,编译就通不过。
宏定义似乎只在一行内有效,遇到回车就强制结束;
用大括号就打破了这个规则。
|