extern const int v1;extern const int v2;extern const int v3;extern const int v4;int _tmain(int argc,_TCHAR* argv[]){ int aee = v1; switch (aee) { case v1: break; case v2: break; case v3: break; case v4: break; } return}
另一个文件deFinition.cpp包含
const int v1 = 1;const int v2 = 2;const int v3 = 3;const int v4 = 4;
当我编译我有错误C2051:case表达式不是常量
但是当我删除外部的一切都是好的.
有什么办法让它与外部工作吗?
解决方法 编号开关仅适用于完全定义的积分类型常数(包括明确转换为积分类型的枚举成员和类). here是指向MSDN的旧引用的链接,但是说什么仍然有效.This link,我在另一个答案的评论中提供了解编译器可以对汇编代码执行哪些优化.如果这被延迟到链接步骤,这是不容易的.
因此,如果在你的情况下,你应该使用if.
总结以上是内存溢出为你收集整理的c – 如何使用带extern常量的开关?全部内容,希望文章能够帮你解决c – 如何使用带extern常量的开关?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)