-Wcast-qual
: предупреждать каждый раз при приведении указателя, чтобы удалить квалификатор типа из целевого типа. Например, предупредить, если const char *
приведен к обычному char *
.
-Wpointer-arith
: предупреждать обо всем, что зависит от размера типа функции или void
. GNU C присваивает этим типам размер 1 для удобства вычислений с void *
указателями и указателями на функции.
-Wwrite-strings
: при компиляции C присвойте строковым константам тип const char[length]
, чтобы при копировании адреса одной в указатель, отличный от const
char *
, появлялось предупреждение; при компиляции C ++ предупредить об устаревшем преобразовании строковых литералов в char *
. Это предупреждение по умолчанию включено для программ на C ++. Эти предупреждения помогут вам найти во время компиляции код, который может попытаться записать в строковую константу, но только если вы очень осторожно использовали const
в объявлениях и прототипах. Иначе будет просто неприятность; вот почему мы не заставили -Wall запрашивать эти предупреждения.
-Wdisabled-optimization
: предупреждать, если запрошенный проход оптимизации отключен. Это предупреждение обычно не означает, что с вашим кодом что-то не так; это просто указывает на то, что оптимизаторы GCC не смогли эффективно обработать код. Часто проблема в том, что ваш код слишком большой или слишком сложный; GCC откажется от оптимизации программ, если сама оптимизация может занять чрезмерно много времени.
-Weffc++
слишком суров. Однако время от времени я компилирую с ним, чтобы проверить свой код. 12.01.2011-Weffc++
предупреждает о наследовании от класса политикиboost::noncopyable
, но наследование от такого класса рекомендуется в Effective C ++. Точно так же предупреждает о наследованииstd::unary_function
и друзей. GCC здесь должен быть немного умнее: класс без членов-данных и без общедоступных функций-членов вряд ли будет использоваться полиморфно. 12.01.2011