Visual C++ Express 2008 でインターフェイス キーワードを無効にするには?

問題は、MS が struct へのインターフェイスを #defines するため、

interface Name {...}

COM C++ コードで使用できます。(objbase.h:199:#define interface __STRUCT__ )

#undef interface だけ Windows.h をインクルードした後 ..


を行う
#define interface QQInterface

コードの前 (例:ヘッダー ファイル内) では、このように、キーワード interface が使用されているすべての場所で、コンパイラはキーワードではない "QQInterface" を認識します。すべてのコードにこの定義が含まれている場合、コンパイラまたはリンカー エラーは発生しません。


適度に移植可能な C コードをコンパイルしようとしている場合は、Microsoft 言語拡張 (コマンド ラインの /Za、[構成プロパティ]> [C/C++]> [VS の言語]) を無効にして、コードがコンパイルされるかどうかを確認することをお勧めします。