В gcc4.6 и более поздних версиях вы можете использовать прагмы для подавления определенных предупреждений и делать это подавление только для определенного блока кода, то есть:
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wno-enum-compare"
// Code that causes warning goes here
#pragma GCC diagnostic pop
Push / Pop используются для сохранения параметров диагностики, которые были до обработки вашего кода.
Это был бы гораздо лучший подход, чем использование #pragma GCC system_header
для подавления всех предупреждений. (Конечно, в старшей версии gcc вы можете «застрять» с подходом #pragma GCC system_header
!)
Вот хорошая ссылка на подавление предупреждений gcc: http://www.dbp -consulting.com / tutorials / SuppressingGCCWarnings.html
На этой странице также описано, как использовать -fdiagnostics-show-option
, чтобы узнать, какая опция управляет конкретным предупреждением.
Конечно, обычно гораздо предпочтительнее устранить причину всех предупреждений, чем подавлять их! Однако иногда это невозможно.