У меня есть проект, в котором я только что обнаружил, что предупреждение C4244 (возможная потеря данных) подавляется. Я сильно подозреваю, что какой-то корявый заголовок MS подавляет это предупреждение и оставляет его подавленным для всех единиц перевода, которые включают указанный заголовок, но я не определил, какой из их бесчисленных заголовков может быть виноват.
Итак, как и любая другая проблема программирования, я хотел бы начать с двоичного поиска, распечатав текущий уровень предупреждения и, если возможно, любые подавленные предупреждения в моем основном предварительно скомпилированном заголовке.
Кто-нибудь знает, какую директиву компилятора я мог бы использовать или какой подход я мог бы использовать, чтобы получить эту информацию?
Я не могу передать вам, насколько неприятно обнаруживать, что мои тщательно сконструированные объявления типов в моих заголовках не выдают предупреждения компилятора, когда вызывающая сторона нарушает контракт и пытается послать мне целое число вместо байта со знаком (что привело к текущая ошибка, которую я пытаюсь решить).
Мысли?
ПРИМЕЧАНИЯ:
Поиск по #pragma во всем моем решении дает только сбалансированные объявления предупреждения #pragma (disable: xxxx), за которым следует предупреждение #pragma (по умолчанию: xxxx). И ни одной из этих ссылок 4244.
Поиски по 4244 во всем решении не возвращают совпадений (я никогда не игнорирую это предупреждение, равно как и ни одна из моих включенных библиотек, подпроектов и т. д.).
Поиски по 4244 по всему MS включают пути, возвращающие несколько ссылок, которые кажутся сбалансированными или почти сбалансированными, в зависимости от символов #define, которые были установлены перед их вызовом. Отсюда мое подозрение, что виновата MS (в сочетании с предыдущей историей MS, выполнявшей небрежную работу в своих заголовках).