Поделиться через


Предупреждение компилятора (уровень 3) C4768

__declspec атрибуты перед спецификацией компоновки игнорируются

Компилятор предупреждает, применяется ли __declspec(...) она перед extern "C" спецификацией компоновки. В прошлом компилятор игнорировал такой атрибут, что могло повлиять на работу в среде выполнения.

Замечания

Это предупреждение является новым в Visual Studio 2017 версии 15.3, которое по умолчанию оставило его не так. Он включен по умолчанию как предупреждение уровня 3, начиная с Visual Studio 2017 версии 15.5. Сведения об отключении предупреждений по версии компилятора см. в предупреждениях компилятора по версии компилятора.

Пример

Следующий код выдает предупреждение C4768:

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

Чтобы устранить это предупреждение, переместите extern "C" вперед:

extern "C" __declspec(noinline) HRESULT __stdcall