Я согласен, что лучше исключить все предупреждения. Если вы получаете тысячи предупреждений, вам следует расставить приоритеты для исправлений.
Начните настраивать ваш компилятор на самый низкий уровень предупреждения. Эти предупреждения должны быть самыми важными. Когда они исправлены, увеличьте уровень предупреждения и повторяйте, пока не достигнете самого высокого уровня предупреждения. Затем установите параметры компиляции таким образом, чтобы предупреждения воспринимались как ошибки.
Если вы обнаружите предупреждение, которое, как вы подозреваете, безопасно игнорировать, проведите некоторое исследование, чтобы проверить свою теорию. Только тогда отключите это и только самым минимальным возможным способом. Большинство компиляторов имеют директивы #pragma
, которые могут отключать / включать предупреждения только для части файла. Вот пример Visual C ++:
typedef struct _X * X; // from external header, not 64-bit portable
#pragma warning( push )
#pragma warning( disable: 4312 ) // 64-bit portability warning
X x = reinterpret_cast< X >( 0xDDDDDDDD ); // we know X not 64-bit portable
#pragma warning( pop )
Обратите внимание, что это отключает предупреждение только для одной строки кода. Использование этого метода также позволяет в будущем выполнять простой текстовый поиск кода для внесения изменений.
В качестве альтернативы вы обычно можете отключить определенное предупреждение для одного файла или для всех файлов. ИМХО это опасно и должно быть только последним средством.