Всегда используйте -O
или выше (-O1
, -O2
, -Os
и т. Д.). На уровне оптимизации по умолчанию gcc использует скорость компиляции и не проводит достаточного анализа, чтобы предупредить о таких вещах, как унифицированные переменные.
Рассмотрите возможность принятия политики -Werror
, поскольку предупреждения, которые не останавливают компиляцию, обычно игнорируются.
-Wall
в значительной степени включает предупреждения, которые с большой вероятностью могут быть ошибками.
Предупреждения, включенные в -Wextra
, имеют тенденцию помечать общий, допустимый код. Они могут быть полезны для обзоров кода (хотя программы в стиле lint находят гораздо больше ловушек более гибкими), но я не включил бы их для нормальной разработки.
-Wfloat-equal
- хорошая идея, если разработчики проекта не знакомы с плавающей запятой, и плохая идея, если они есть.
-Winit-self
полезно; Интересно, почему это не входит в -Wuninitialized
.
-Wpointer-arith
полезно, если у вас есть в основном переносимый код, который не работает с -pedantic
.