Как отключить предупреждение компоновщика с предупреждением #pragma? - PullRequest
4 голосов
/ 05 июня 2019

Мы можем отключить предупреждение компилятора с помощью

#pragma warning(disable:4966)

Как мы можем отключить предупреждение компоновщика с помощью директивы #pragma? Что-то вроде:

// Disable linker warning LNK4221
#pragma warning(disable:4221)

Ответы [ 2 ]

2 голосов
/ 05 июня 2019

Предупреждение компоновщика нельзя поместить в исходный файл, поскольку исходные файлы (.CPP / .C / .H и т. Д.) Предназначены для использования компилятором, а не для компоновщика.Компиляция будет производить объектные файлы из одного или нескольких файлов (через одну или несколько «единиц перевода»).Если вы поместите #prama disable_linker_warning в некоторый исходный файл - к какому файлу .OBJ (часть ссылок) должна перейти настройка компоновщика?

Настройки компоновщика глобальные для проекта - поскольку файлы .OBJ связаны для создания окончательного образа PE, и тогда будут применяться предупреждения компоновщика.Вы можете выбрать предупреждения компоновщика на странице настроек проекта.

Директивы препроцессора не будут сохранены и позже распространены на компоновщик.Это может привести к неоднозначности нескольких путей (из-за нескольких единиц перевода) и другим сложностям.Такая функция компоновщика может быть ненадежной.

Обратите внимание, что в VC ++, когда вы выбираете свойство одного исходного файла , вы не видите никакой настройки "компоновщика".

enter image description here

0 голосов
/ 05 июня 2019

Вы не можете отключить это предупреждение для текущей обрезки наборов инструментов MSVC.

Да, предупреждения могут быть действительно очень полезными, но вы можете игнорировать это, в частности, при многих обстоятельствах. Просто убедитесь, что ваша ситуация является одним из тех обстоятельств, и двигайтесь дальше. Например, вы уверены, что необходимо включить модуль компиляции, который вызывает это предупреждение?

...