摘要:
今天写程序时碰到这个问题:包含了第三方库的头文件,头文件内有如下声明: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常量在编译时尚不能明确,所以会报错。暂时使用" 阅读全文