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