今天在写switch的时候遇到个奇怪的问题,
switch (enemy.tag) {
case TAG_ENEMY_COCA:
EnemyCoca * coca = (EnemyCoca *)enemy;
break;
default:
break;
}
代码行:EnemyCoca * coca = (EnemyCoca *)enemy;报出Expected expression
这么一个错.
上网查找资料发现,在 case这类标签语句后面,can only precede a statement , Declarations aren't statements in C ,即:后面必须紧跟一个statement(表达式) ,在C中,声明语句不是statement(表达式),因此, 随便加个 statement 就没问题,例如:“;”,“{}”,或者声明语句放到swich之前。
解决方法:
1、加分号
switch (enemy.tag) {
case TAG_ENEMY_COCA:
;
EnemyCoca * coca = (EnemyCoca *)enemy;
break;
default:
break;
}
switch (enemy.tag) {
case TAG_ENEMY_COCA:
{
EnemyCoca * coca = (EnemyCoca *)enemy;
break;
default:
break;
}
}
switch (enemy.tag) {
case TAG_ENEMY_COCA:
coca = (EnemyCoca *)enemy;
break;
default:
break;
}