gpt4 book ai didi

c++ - 非事件 #ifdef block 中的编译器错误

转载 作者:行者123 更新时间:2023-11-28 05:34:57 24 4
gpt4 key购买 nike

我正在开发一个用 visual studio 2013 编译但也需要用 visual studio 2008 编译的 c++ 程序,两者都处于 Release模式。我正在使用 #ifdef block 来添加当时不支持的功能/特性的替代方案。以下代码块只是一个示例:

struct someStruct
{
#ifdef _VS2008 // defined in preprocessor definition
someStruct()
{
number = -1;
}
int number;
#else
int number = -1;
#endif
char* Text;
};

我在 int number = -1 行收到以下编译器错误。

error C2864: 'someStruct::number' : only static const integral data members can be initialized within a class

由于 #else 下的代码块(在本例中为 int number = -1)似乎并且应该处于非事件状态,为什么编译器会生成有关它们的错误?

欢迎任何意见!

最佳答案

您应该使用 _MSC_VER 宏来检测 Visual Studio 版本:

#if (_MSC_VER == 1500)

这里的1500表示VS2008。版本列表是 here .

关于c++ - 非事件 #ifdef block 中的编译器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38537771/

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