c,微处理器中的定义和逻辑

时间:2015-12-09 23:35:13

标签: c macros

这段代码有什么问题?我是c的新手,但我无法通过在if语句中使用宏来理解我做错了什么。它给了我一个意外的令牌错误。

#define PBrun PORTBbits.RB10
#define pressed 0;
#define released 1;

int debouncedone = true;

void debouncetimerdone(){
    debouncedone = true;
    if (PBrun == pressed){
        debouncedone = false;
    }
}

当我用它们的含义替换宏时,代码工作正常。

1 个答案:

答案 0 :(得分:4)

删除宏定义末尾的分号:

即。 改变

#define pressed 0;
#define released 1;

#define pressed 0
#define released 1

使用分号,if语句在宏替换后将如下所示:

 if (PBrun == 0;){
        debouncedone = false;
    }

这显然会产生语法错误。