Можете ли вы отключить (определенные) предупреждения компилятора для любого заголовка, включенного из определенного местоположения? - PullRequest
15 голосов
/ 17 июля 2010

У меня есть сторонняя библиотека, которая генерирует массу предупреждений, даже в / W3. Есть ли способ для меня, чтобы сказать компилятору "отключить C4244 для любого файла, включенного в этот каталог или его подкаталоги"? Конечно, я не хочу отключать предупреждение в нашей собственной кодовой базе, и при этом я не хочу отслеживать каждое возможное включение и переносить его с #pragma warning(...

Ответы [ 5 ]

9 голосов
/ 21 июля 2010

Я не хочу отвечать на свой вопрос здесь, но боюсь, что «правильный» ответ в этом случае: это невозможно.

5 голосов
/ 18 июля 2010

Вы можете поместить флаги, например /wd4600 в VS Project Settings > Command-line Options, чтобы сообщить компилятору о подавлении определенных предупреждений компилятора

4 голосов
/ 17 июля 2010

Я не уверен, что вы имели в виду, что не хотите заключать в свои операторы включения директивы #pragma или не хотели тратить время на поиск правильной директивы.Если это последнее, то это то, что я сделал в прошлом:

#ifdef _MSC_VER
#pragma warning( disable : 4244 )
#endif

#include "MyHeader.h"

#ifdef _MSC_VER
#pragma warning( default : 4244 ) /* Reset to default state */
#endif
3 голосов
/ 17 июля 2010

Вы можете попробовать удалить сторонний проект из вашего пути включения.Затем создайте подкаталог, имеющий ту же структуру dir и файлы заголовков, что и у стороннего проекта, так что теперь все #include теперь находят ваши заголовки.Затем в каждом поддельном заголовке xxxx.h вы устанавливаете прагму, затем включаете настоящий заголовок xxxx.h, а затем очищаете прагму.Чтобы избежать рекурсивного включения одного и того же файла, вам нужно добавить дополнительный каталог к ​​# include.

Лично я бы просто просмотрел ваш проект и добавил прагмы.

2 голосов
/ 24 мая 2017

Попробуйте:

//in wrapper_3rdParty.h
#pragma once

#pragma warning(push)
#pragma warning(disable : 4244)

#include "3rdParty.h"

#pragma warning(pop)

Тогда в вашем коде просто #include "wrapper_3rdParty.h".

Это решает проблемы с поведением default в предупреждении, и все случаи использования вами пакета htat имеют предупреждение подавлено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...