#define-macros 中的括号失败

Parentheses in #define-macros fail

在 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;);

当然是错的。