我正在开发一个用Visual Studio 2013编译的c ++程序,但是在发布模式下也需要使用visual studio 2008进行编译。我正在使用#ifdef
块来添加当时不支持的功能/功能的替代方案。以下代码块只是一个示例:
struct someStruct
{
#ifdef _VS2008 // defined in preprocessor definition
someStruct()
{
number = -1;
}
int number;
#else
int number = -1;
#endif
char* Text;
};
我在int number = -1
行上收到以下编译错误。
错误C2864:' someStruct :: number' :只有静态const积分数据 成员可以在一个类
中初始化
由于#else
下的代码块(在这种情况下为int number = -1
)似乎是并且应该处于非活动状态,为什么编译器会产生错误呢?
感谢任何输入!
答案 0 :(得分:1)
答案 1 :(得分:0)
找到了解决方案。代码块位于DLL项目中,主项目包含一些导出的头文件。我也不知道我必须在主项目中定义_VS2008
。