我最近从 Visual Studio 2010 切换到 Visual Studio 2012。我正在处理的项目使用 MiLi的BitwiseEnums库。根据此处的说明,我只包括 BitwiseEnums 库,因此添加到我的项目中的唯一文件是bitwise_enums.h。
在 VS2010 中我没有问题。在 VS2012 中,每当我 #include bitwise_enums.h 并尝试编译时,我都会收到以下错误消息:
1>c:\program files (x86)\windows kits\8.0\include\um\oaidl.h(319):
error C2057: expected constant expression
当我检查我的项目的外部依赖项时,它确实列出了文件 oaidl.h。查看此文件,我发现以下语句在第 319 行结束。
typedef /* [v1_enum] */
enum tagSF_TYPE
{
SF_ERROR = VT_ERROR,
SF_I1 = VT_I1,
SF_I2 = VT_I2,
SF_I4 = VT_I4,
SF_I8 = VT_I8,
SF_BSTR = VT_BSTR,
SF_UNKNOWN = VT_UNKNOWN,
SF_DISPATCH = VT_DISPATCH,
SF_VARIANT = VT_VARIANT,
SF_RECORD = VT_RECORD,
SF_HAVEIID = ( VT_UNKNOWN | VT_RESERVED )
} SF_TYPE; // Line 319
我的问题是:
- 什么是 oaidl.h,是什么导致它包含在我的项目中?
- 错误消息是什么意思,我该如何解决?
- 仅在 VS2012 中发生此错误的原因可能是什么?