У меня есть сторонняя библиотека, которая генерирует тонну предупреждений, даже под/W3. Существует ли способ для меня сказать компилятор, "отключите C4244 для какого-либо файла, включенного из этого каталога или его подкаталогов"? Конечно, я не хочу отключать предупреждение в нашей собственной кодовой базе, и при этом я не хочу должным быть разыскивать каждое возможное, включают и переносят его с #pragma warning(...
Не хочется отвечать на свой вопрос, но боюсь, что "правильный" ответ в данном случае: это невозможно.
Вы можете поместить флаги, например / wd4600
в Настройки проекта VS> Параметры командной строки
, чтобы указать компилятору подавить определенные предупреждения Complier.
Вы можете попробовать удалить сторонний проект из вашего пути включения. Затем создайте подкаталог, который имеет ту же структуру каталога и файлы заголовков, что и сторонний проект, чтобы все #includes теперь находили ваши заголовки. Затем в каждом поддельном заголовке xxxx.h вы устанавливаете прагмы, затем включаете настоящий заголовок xxxx.h, а затем очищаете прагму. Чтобы избежать рекурсивного включения одного и того же файла, вам придется добавить дополнительный каталог в #include.
Лично я бы просто просмотрел ваш проект и добавил прагмы.
Я не уверен, имели ли вы в виду, что не хотите заключать в инструкции include директивы #pragma
, или не хотите тратить время на отслеживание правильной директивы. Если последнее, то это то, что я делал раньше:
#ifdef _MSC_VER
#pragma warning( disable : 4244 )
#endif
#include "MyHeader.h"
#ifdef _MSC_VER
#pragma warning( default : 4244 ) /* Reset to default state */
#endif