gpt4 book ai didi

c++ - 如何将 switch 与外部常量一起使用?

转载 作者:可可西里 更新时间:2023-11-01 15:16:22 25 4
gpt4 key购买 nike

一些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 表达式不是常量但是,当我删除 extern 时,一切都很好。

有什么方法可以让它与 extern 一起工作吗?

最佳答案

没有。 switch 仅适用于完全定义的整型常量(包括明确转换为整型的枚举成员和类)。 here是指向 MSDN 旧引用的链接,但所说的内容仍然有效。

This link我在对另一个答案的评论中提供的内容解释了编译器可以对汇编代码执行哪些优化。如果这被延迟到链接步骤,这将不容易实现。

因此,您应该在您的情况下使用 if..else if

关于c++ - 如何将 switch 与外部常量一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5579028/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com