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

defines and logic in c, microprocessors

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

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

int debouncedone = true;

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

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

删除宏定义末尾的分号:

即 变化自

#define pressed 0;
#define released 1;

#define pressed 0
#define released 1

有了分号,if 语句在宏替换后看起来像这样:

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

这显然会产生语法错误。