#define 宏中的括号失败

Parentheses in #define-macros fail

本文关键字:失败 #define      更新时间:2023-10-16

在CCSTUDIO中编程msp430。在第二行和第三行中,表达式在没有括号的情况下编译得很好,但使用第二行所示的括号,它们无法在使用宏的行进行编译。为什么会失败?

#define LED2 BIT0;                          // P1.0 : Green LED
#define LED2on (P1OUT |= LED2)              // P1.0 high
#define LED2off P1OUT &= ~LED2              // P1.0 low   
...
LED2on;   //line 32
>> Compilation failure
subdir_rules.mk:9: recipe for target 'main.obj' failed
"../main.c", line 32: error #18: expected a ")"
"../main.c", line 32: error #29: expected an expression

你的问题在这里:

#define LED2 BIT0;

它应该是:

#define LED2 BIT0

否则,您的第 32 行将扩展为:

(P1OUT |= BIT0;);

当然,这是错误的。