2010-10-18 4 views
6

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

ответ

7

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

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

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

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

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

+0

Пункт № 1 именно то, что я искал, спасибо! – Samaursa

3

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

Мой заголовок подавления заглушек доступен по адресу: my blog; достаточно скомпилировать код с помощью <windows.h> на уровне предупреждения с MSVC без предупреждений.

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

Приветствия & НТН,

+0

Файл заголовка подавления очень очень полезно, спасибо! – Samaursa

+1

Мне больно, что вы утверждаете, что многие из них глупы. – bobpaul

+0

@bobpaul: Насколько я вижу, ваша область знаний - это Python, а не C++. –

2

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

// include_file_wrapper.h 

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

#include "file.h" 

#pragma GCC diagnostic pop 

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

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

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

Смежные вопросы