#c #gcc #gnu
#c #gcc #gnu
Вопрос:
Сегодня утром у меня был спазм мозга. Не могу вспомнить опцию компилятора GNU для пометки
if (a = b)
как предупреждение / ошибка, поскольку это назначение, а не условие.
Комментарии:
1.
-Wall
включает в себя комментарий по этому поводу (упомянутый здесь en.wikipedia.org/wiki/Yoda_conditions ). Это опция?
Ответ №1:
Самый простой способ — включить все предупреждения и посмотреть, о чем сообщается:
int main(int argc, char **argv){
if(argc=0) ;
}
скомпилируйте с -Wall
вы получите предупреждение:
<source>: In function 'int main(int, char**)':
<source>:3:12: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
3 | if(argc=0) ;
| ~~~~^~
Compiler returned: 0
Таким образом, опция: -Wparentheses
Комментарии:
1. Также смотрите документы: gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
2. @BenjaminMaurer это был ленивый способ :). Документация длинная
3. IDK, я только что погуглил это и получил документы. Кажется еще более ленивым: P
4. Работает для этого случая, но обратите внимание, что в целом
-Wall
(и даже-Wextra
) не активирует все предупреждения, которые может выдавать компилятор (несмотря на название!).).5. @P__J__ грустные
-Wshadow
шумы