コンパイラ警告 (レベル 3) C4768
リンケージ指定子の前の
__declspec
属性は無視されます
extern "C"
リンケージ指定よりも先に __declspec(...)
が適用された場合、コンパイラは警告を出します。 以前のコンパイラは属性を無視し、実行時に影響する可能性がありました。
解説
この警告は Visual Studio 2017 バージョン 15.3 で新しく追加されたもので、既定ではオフのままになっています。 Visual Studio 2017 バージョン 15.5 以降では、レベル 3 の警告として既定で有効になっています。 コンパイラのバージョン別の警告を無効にする方法は、「コンパイラのバージョン別のコンパイラの警告」を参照してください。
例
次のコードでは、警告 C4768 が生成されます。
__declspec(noinline) extern "C" HRESULT __stdcall // C4768: __declspec attributes before linkage specification are ignored
この警告を解決するには、extern "C"
を先頭に配置します。
extern "C" __declspec(noinline) HRESULT __stdcall