Изменение уровня предупреждения для сторонних библиотек - PullRequest
6 голосов
/ 18 октября 2010

Мне обычно нравится компилировать против уровня предупреждения 4 в Visual Studio и рассматривать все предупреждения как ошибки.Проблема в том, что Ogre3D не скомпилирован с уровнем предупреждения 3 (ни FBX SDK, ни OIS, который я тоже использую), и это создает проблему, потому что теперь у меня есть масса предупреждений из библиотек Ogre3D, которые теперь рассматриваются как ошибки.До сих пор я собирал на уровне 3, но это меня очень беспокоит.Есть ли способ отключить предупреждения для определенных сторонних библиотек, которые я не могу контролировать?

Ответы [ 3 ]

9 голосов
/ 18 октября 2010

Вы не говорите точно, как вы компилируете, но вот несколько вариантов:

1 - Внутри Visual Studio вы можете установить уровень предупреждения для отдельных исходных файлов через Свойства для каждого исходного файла

2 - Вы также можете динамически изменять уровень предупреждения в файле, используя

#pragma warning(push, 3)
// Some code, perhaps #includes
#pragma warning(pop)

, который устанавливает уровень предупреждения 3 между двумя прагмами.

3 голосов
/ 18 октября 2010

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

Мой заголовок подавления глупых предупреждений доступен на мой блог ;достаточно скомпилировать код, используя <windows.h> на уровне предупреждений 4 с MSVC, без предупреждений.

Кроме этого, вы можете пойти на крайнюю меру использования «брандмауэра компилятора», что означаетиспользование сторонней библиотеки внутри файла реализации или набора таких файлов.Затем вы можете скомпилировать эти файлы с низким уровнем предупреждения.Но я не думаю, что оно того стоит.

Приветствия & hth.,

2 голосов
/ 18 октября 2010

Вы можете обернуть сторонние файлы .h в свой собственный файл и там отключить локальные оскорбительные предупреждения, так как вы можете отключить не все предупреждения, а только определенные.

// include_file_wrapper.h

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wuninitialized"

#include "file.h"

#pragma GCC diagnostic pop

Для gcc вот как это можно сделать

http://gcc.gnu.org/onlinedocs/gcc/Pragmas.html

http://gcc.gnu.org/onlinedocs/gcc/Diagnostic-Pragmas.html#Diagnostic-Pragmas

...