Aviso do compilador (nível 3) C4768

os atributos __declspec antes da especificação de vínculo são ignorados

O compilador avisa se __declspec(...) é aplicado antes da especificação de vinculação de extern "C". Anteriormente, o compilador ignorava o atributo, o que podia ter implicações de runtime.

Comentários

Esse aviso é novo no Visual Studio 2017 versão 15.3, que o deixou desativado por padrão. Ele é habilitado por padrão como um aviso de nível 3 a partir da versão 15.5 do Visual Studio 2017. Para obter informações sobre como desabilitar avisos por versão do compilador, consulte Avisos do compilador por versão do compilador.

Exemplo

O código a seguir produz o aviso C4768:

__declspec(noinline) extern "C" HRESULT __stdcall // C4768: __declspec attributes before linkage specification are ignored

Para corrigir o aviso, coloque extern "C" primeiro:

extern "C" __declspec(noinline) HRESULT __stdcall