嵌入式C中的"预期声明"错误

YMJ*_*YMJ 5 c arm keil arm7

我收到的错误就像是"预期的声明"

我的代码如下

#define IN_Tamper    0X00001000     /*P2.12 = EINT2*/
#define DIR_IN_Tamper    { FIO2DIR &= ~0X00001000 ; } 

/* main */
DIR_IN_Tamper(); 
if(((IN_Tamper >> 12) & 0x01) == 1)
            BUZZER_ON();
         else
            BUZZER_OFF();   
Run Code Online (Sandbox Code Playgroud)

我收到错误说

  1. 预期DIR_IN_Tamper()的声明;

  2. 期待对其他部分的陈述.....

phi*_*hag 7

C预处理器(至少在你使用它的方式)只是一个简单的搜索和替换,所以你有效地运行

/* main */
{ FIO2DIR &= ~0X00001000 ; } (); 
Run Code Online (Sandbox Code Playgroud)

这没有任何意义.删除行中的括号

DIR_IN_Tamper(); 
Run Code Online (Sandbox Code Playgroud)

对于BUZZER_ONBUZZER_OFF,您也想删除括号.如果宏没有用花括号括起来,你也想添加它们,比如

if(((IN_Tamper >> 12) & 0x01) == 1) {
    BUZZER_ON
} else {
    BUZZER_OFF
}
Run Code Online (Sandbox Code Playgroud)