功夫Panda

记录一些遇到的问题

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

今天写程序时碰到这个问题:

包含了第三方库的头文件,头文件内有如下声明:extern const int ZOO_CREATED_EVENT;

变量在.c文件内定义,已被编译到第三方库中。

然后我在switch逻辑中用了上面的常量:

switch (type) {
case ZOO_CREATED_EVENT:
    ...
    break;
}

编译报错如下,‘ZOO_CREATED_EVENT’ cannot appear in a constant-expression

比较诧异!

经过查阅了解到,编译器构造switch查找表时需要明确其常量值,而extern常量在编译时尚不能明确,所以会报错。

暂时使用"if ... else if ..."解决问题。

 

posted on 2012-11-13 20:03  功夫Panda  阅读(984)  评论(0编辑  收藏  举报