这段代码有什么问题?我是c的新手,但我无法通过在if语句中使用宏来理解我做错了什么。它给了我一个意外的令牌错误。
#define PBrun PORTBbits.RB10
#define pressed 0;
#define released 1;
int debouncedone = true;
void debouncetimerdone(){
debouncedone = true;
if (PBrun == pressed){
debouncedone = false;
}
}
当我用它们的含义替换宏时,代码工作正常。
答案 0 :(得分:4)
删除宏定义末尾的分号:
即。 改变
#define pressed 0;
#define released 1;
到
#define pressed 0
#define released 1
使用分号,if
语句在宏替换后将如下所示:
if (PBrun == 0;){
debouncedone = false;
}
这显然会产生语法错误。