具有 PHP 和 Javascript 编程背景,有时很难理解 C 和 C 编译器在某些情况下的行为。我刚刚遇到的一种情况(对 AVR ATmega16 微控制器进行编程)是将变量与定义的常量进行比较,这显然不起作用:
#define SYS_STATE_IDLE 0;
//...
char systemState = SYS_STATE_IDLE;
/...
// Main function body
int main(void) {
//...
for(;;) {
// Determine if a new key was pressed
if (keyPressed()) {
switch (systemState) {
case SYS_STATE_IDLE:
break;
default:
break;
}
}
}
return 0;
}
编译器(AVR GCC)首先抛出以下异常case
:
../SunTrackerMainController.c:103: error: expected ':' or '...' before ';' token
../SunTrackerMainController.c:103: error: expected expression before ':' token
我也试过这个if
说法:
if (systemState == SYS_STATE_IDLE) {
// whatever
}
但结果基本相同:
../SunTrackerMainController.c:109: error: expected ')' before ';' token
我做错了什么?