Я читаю gcc руководство в данный момент, особенно часть о предупреждении/флагах ошибки. После чтения части о флаге-Wextra, интересно, полезно ли это вообще. Кажется, что это жалуется на вещи, которые, кажется, довольно субъективны или вопрос вкуса. Я не то, который испытал с gcc, я только время от времени использую его для некоторых маленьких проектов в университете, таким образом, ко всем испытал C/C++ (или для любого языка Вы используете gcc), каково соглашение с-Wextra?
-Wextra
, среди прочего подразумевает -Wtype-limits
:
Предупреждение, если сравнение всегда истинно или всегда ложно из-за ограниченного диапазона типа данных, но не предупреждать для постоянных выражений. Например, предупреждать, если переменная без знака сравнивается с нулем с помощью '<' или '>='. Это предупреждение также включается с помощью -Wextra.
Я нахожу это действительно полезным.
Я обычно добавляю -Wno-sign-compare
и -Wno-unused-parameter
для удаления шума.
Подразумеваемый -Wuninitialized
(с параметром -O2
) был очень для меня полезным, но его первоначальное добавление в базу кода может быть немного устрашающе. Один из способов справиться с этим - добавить два макроса (которые выглядят немного странно: знак равенства преднамерен):
#define ELIMINATE_GCC_WARNING = 0 // used to remove nuisance warnings
#define UNCHECKED_GCC_WARNING = 0 // not yet verified
Затем вы можете быстро удалить предупреждения gcc и получить чистую компиляцию, используя, например:
int foo UNCHECKED_GCC_WARNING;
Затем как необязательный шаг, вернитесь назад и проверьте эти дополнения и измените их одно за другим на ELIMINATE_GCC_WARNING. Это может быть медленным. Но я был бы удивлен, если бы вы не нашли существующих ошибок.