加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 如何使用带extern常量的开关?

发布时间:2020-12-16 06:43:29 所属栏目:百科 来源:网络整理
导读:一些code.cpp文件包含 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
一些code.cpp文件包含
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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读