最近、VisualStudio2010からVisualStudio2012に切り替えました。作業中のプロジェクトでは、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でのみ発生する理由は何でしょうか。