swich语句 编译错误,Expected expression

今天在写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;

    }

2、加花括号

    switch (enemy.tag) {

        case TAG_ENEMY_COCA:

{

            EnemyCoca * coca = (EnemyCoca *)enemy;

         break;

        default:

            break;

}

    }

3、声明在前
     EnemyCoca  * coca;

    switch (enemy.tag) {

        case TAG_ENEMY_COCA:

                coca = (EnemyCoca *)enemy;

         break;

        default:

            break;

    }





你可能感兴趣的:(cocos2d,objectc)