我最近從Visual Studio 2010切換到Visual Studio 2012.我正在使用的項目使用MiLi中的BitwiseEnums庫。根據here的說明,我只包含BitwiseEnums庫,所以添加到我的項目中的唯一文件是bitwise_enums.h。oaidl.h(319):錯誤C2057:預期的常量表達式
在VS2010中我沒有問題。在VS2012我收到以下錯誤消息,每當我#包括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的原因?
我檢查了Visual Studio 2010中的oaidl.h,它包含完全相同的行。 – JBentley