Описание опций gcc

-Wall Включает много разных полезных предупреждений о потенциальных ошибках в программе. Некоторые предупреждения не включаются с помощью этой опции, и их нужно указывать дополнительно.

-Werror Превращает предупреждения в сообщения об ошибках. В обычном режиме предупреждения не приводят к завершению компиляции, и получившуюся программу можно будет запустить. В режиме, устанавливаемом этой опцией, все предупреждения считаются как ошибки компиляции.

-Wformat-security Включает дополнительные проверки функций семейства printf и scanf (запрещается потенциально опасное использование этих функций).

-Wignored-qualifiers Запрещает “бессмысленное” использование квалификаторов const в типе возвращаемого значения, например, такое:

const int foo(void);

-Winit-self Запрещает бессмысленные конструкции вида:

int a = a;

-Wswitch-default Требует, чтобы в каждом операторе switch присутствовал вариант default:

-Wfloat-equal Запрещает использование операций == и != для вещественных значений.

-Wpointer-arith Запрещает арифметические операции с типом void*.

-Wtype-limits Запрещает операции сравнения, которые дают известный результат из-за ограниченного диапазона типа. Например, операция a >= 0 всегда дает значение “истина”, если переменная a имеет беззнаковый тип.

-Wempty-body Запрещает пустое тело у операторов if и других. Например,

if (a > 0);

-Wno-logical-op Разрешает потенциально неправильные логические операции (например, когда логическая операция может быть перепутана с побитовой операцией).

-Wstrict-prototypes Запрещает определение функций без указания типов аргументов.

-Wold-style-declaration Запрещает устаревший стиль определения функций и переменных.

-Wold-style-definition Запрещает устаревший стиль описания функций.

-Wmissing-parameter-type Запрещает устаревший стиль описания функций.

-Wmissing-field-initializers Требует инициализации всех полей структур, если структура вообще инициализируется.

-Wnested-externs Запрещает описание extern-переменных внутри функций.

-Wno-pointer-sign Разрешает использовать в качестве аргумента указатель, знаковость типа которого отличается от знаковости типа параметра, то есть, например, передавать указатель типа unsigned char* в функцию, требующую параметра типа char*.

-std=gnu99 Включает поддержку стандарта C99 и некоторых его расширений.

Leave a Reply