Завжди використовуйте -O
або вище ( -O1
, -O2
, -Os
і т.д.). На рівні оптимізації за замовчуванням gcc іде на швидкість компіляції і не робить достатнього аналізу, щоб попереджати про такі речі, як неіціалізовані змінні.
Подумайте про створення -Werror
політики, оскільки попередження, які не зупиняють компіляцію, як правило, ігноруються.
-Wall
в значній мірі вмикає попередження, які, ймовірно, є помилками.
Попередження, включені до, -Wextra
як правило, позначають загальний законний код Вони можуть бути корисними для огляду коду (хоча програми в стилі ворсинок знаходять набагато більше підводних каменів і більш гнучких), але я б не вмикав їх для нормальної розробки.
-Wfloat-equal
це гарна ідея, якщо розробники проекту не знайомі з плаваючою точкою, і погана ідея, якщо вони є.
-Winit-self
корисний; Цікаво, чому це не входить -Wuninitialized
.
-Wpointer-arith
корисно, якщо у вас є переважно портативний код, який не працює -pedantic
.
-save-temps
,-Wshadow
і-fmudflap
були найбільшими знахідками, про які я не знав, завдяки усім.