Что делает"- Wall "в" G++ - Wall test.тест cpp-o " do?



- o изменяет выходное имя файла (я обнаружил, что с помощью --help)



но я не могу выяснить, что -Wall делает?

818   7  

7 ответов:

Это сокращение от "предупредить всех" - он включает (почти) все предупреждения, о которых может рассказать вам g++. Обычно это хорошая идея, особенно если вы новичок, потому что понимание и исправление этих предупреждений может помочь вам исправить множество различных проблем в вашем коде.

см. man gcc.

стена включает эти предупреждения:

-Waddress -Warray-bounds (only with -O2) -Wc++0x-compat -Wchar-subscripts
-Wenum-compare (in C/Objc; this is on by default in C++) -Wimplicit-int (C and
 Objective-C only) -Wimplicit-function-declaration (C and Objective-C only) 
-Wcomment -Wformat -Wmain (only for C/ObjC and unless -ffreestanding) 
-Wmissing-braces -Wnonnull -Wparentheses -Wpointer-sign -Wreorder -Wreturn-type 
-Wsequence-point -Wsign-compare (only in C++) -Wstrict-aliasing 
-Wstrict-overflow=1 -Wswitch -Wtrigraphs -Wuninitialized -Wunknown-pragmas 
-Wunused-function -Wunused-label -Wunused-value -Wunused-variable 
-Wvolatile-register-var

-Wextra содержит:

-Wclobbered -Wempty-body -Wignored-qualifiers -Wmissing-field-initializers
-Wmissing-parameter-type (C only) -Wold-style-declaration (C only) -Woverride-init
-Wsign-compare -Wtype-limits -Wuninitialized -Wunused-parameter (only with -Wunused
 or -Wall) -Wunused-but-set-parameter (only with -Wunused or -Wall)

есть еще много предупреждений, которые вы должны включить явно.

например, для нашего кода C мы используем:

-стены -Wextra -Waggregate-возвращение -Wcast-выровнять -Wcast-кач -Wdisabled-оптимизация-данные-по-ноль -Wendif-метки -Wformat-дополнительные аргументы -Wformat-небуквенный -Wformat-безопасности -Wformat-y2k -Wimplicit -Wimport -Winit-собственной Винлайн -Winvalid-ПЧ -Wjump-скучает-инит-Wlogical-ОП -Werror=отсутствует-брекеты -Wmissing-объявления -кто-хватает-формат-атрибут -Wmissing-включать-изд -Wmultichar -Wpacked -Wpointer-arith -Wreturn-тип -Wsequence-точка -Wsign-сравнить -устриц.-сглаживание -устриц.-сглаживание=2 -Wswitch -Wswitch-по умолчанию -Werror=фдоон -кто-неиспользованный -Wvariadic-макросы -Wwrite-струны -Сан. узел++-совместимость -Werror=декларация-после-заявление -Werror=неявные функции-декларации -Wmissing-прототипы -Werror=вложенного экстернов -Werror=старый-стиль-определение -Werror=строгий-прототипов

или просто набор предупреждений с https://www.gnu.org/software/autoconf-archive/ax_compiler_flags.html

к сожалению, ни один из ответов не цитирует фактически соответствующую часть руководства, что действительно приводит его к точке:

Это позволяет все предупреждения о конструкциях, которые некоторые пользователи считают сомнительно, и это легко избежать (или изменить, чтобы предотвратить предупреждение), даже в сочетании с макросами.

[...]

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

Ergo:

  • -Wall тут не в смысле "все предупреждения".
  • он также не означает "(почти) все", а не длинный выстрел.
  • это тут означает набор отдельных опций это обязательно изменится.

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


лично я бы не пошел меньше, чем -Wall -Wextra -Wfloat-equal -Wundef -Wcast-align -Wwrite-strings -Wlogical-op -Wmissing-declarations -Wredundant-decls -Wshadow -Woverloaded-virtual. Все мои текущие проекты фактически используйте список предупреждений длиннее этого (не вызывая ни одного из них). И я проверяю руководство по каждому основному выпуску для новых опций. Компилятор-ваш друг. Используйте любую диагностику, которую он может вам предложить.

Он включает предупреждения, которые считаются полезными и легко избежать в источнике писателей gcc. Существует также-W (- Wextra в новых версиях), которые считаются полезными, но для которых работа вокруг ложных срабатываний может быть затруднена или привести к неуклюжему коду.

gcc имеет также кучу других предупреждений, как правило, менее полезных. См http://gcc.gnu.org/onlinedocs/gcc-4.4.3/gcc/Warning-Options.html#Warning-Options

Он включает все предупреждения. (читается как "предупреждение всем")

Это enables most warning messages.

Вы можете узнать больше, если вы используете g++ --help=warnings.

Он показывает все предупреждения. Я бы рекомендовал также использовать -pedantic чтобы предупредить о некоторых несоответствующих частях кода.

Comments

    Ничего не найдено.