除了-Wall之外,其他人发现的警告有用吗?
http://gcc.gnu.org/onlinedocs/gcc-4.3.2/gcc/Warning-Options.html
我经常使用:
gcc -m64 -std=c99 -pedantic -Wall -Wshadow -Wpointer-arith -Wcast-qual \ -Wstrict-prototypes -Wmissing-prototypes
这个集合对于那些不习惯它的人来说很有用(我的代码是第一次用这些标志编译的人); 它很少给我一个问题(虽然-Wcast-qual偶尔会令人讨厌).
截至2011-09-01,使用gcc版本4.6.1
我目前的"发展"别名
gcc -std=c89 -pedantic -Wall \ -Wno-missing-braces -Wextra -Wno-missing-field-initializers -Wformat=2 \ -Wswitch-default -Wswitch-enum -Wcast-align -Wpointer-arith \ -Wbad-function-cast -Wstrict-overflow=5 -Wstrict-prototypes -Winline \ -Wundef -Wnested-externs -Wcast-qual -Wshadow -Wunreachable-code \ -Wlogical-op -Wfloat-equal -Wstrict-aliasing=2 -Wredundant-decls \ -Wold-style-definition -Werror \ -ggdb3 \ -O0 \ -fno-omit-frame-pointer -ffloat-store -fno-common -fstrict-aliasing \ -lm
"释放"别名
gcc -std=c89 -pedantic -O3 -DNDEBUG -flto -lm
截至2009-11-03
别的"发展"
gcc -Wall -Wextra -Wformat=2 -Wswitch-default -Wcast-align -Wpointer-arith \ -Wbad-function-cast -Wstrict-prototypes -Winline -Wundef -Wnested-externs \ -Wcast-qual -Wshadow -Wwrite-strings -Wconversion -Wunreachable-code \ -Wstrict-aliasing=2 -ffloat-store -fno-common -fstrict-aliasing \ -lm -std=c89 -pedantic -O0 -ggdb3 -pg --coverage
"释放"别名
gcc -lm -std=c89 -pedantic -O3 -DNDEBUG --combine -fwhole-program -funroll-loops
我喜欢 - 错误.保持代码警告免费.
我从C++开始,所以当我切换到学习CI时,确保是肛门:
-fmessage-length=0 -ansi -pedantic -std=c99 -Werror -Wall -Wextra -Wwrite-strings -Winit-self -Wcast-align -Wcast-qual -Wpointer-arith -Wstrict-aliasing -Wformat=2 -Wmissing-declarations -Wmissing-include-dirs -Wno-unused-parameter -Wuninitialized -Wold-style-definition -Wstrict-prototypes -Wmissing-prototypes
获取该手册使用的GCC的版本,发现所有的警告选项可用,然后关闭只有那些您有一个令人信服的理由这样做.(例如,不可修改的第三方标题会给你很多警告.)记录这些原因.(在Makefile中或您设置这些选项的任何位置.)在常规intervalls 和每次升级编译器时查看设置.
编译器是你的朋友.警告是你的朋友.给编译器尽可能多的机会告诉您潜在的问题.
我也用:
-Wstrict溢出= 5
如果我编写依赖于整数溢出行为的代码,可以捕获可能出现的那些令人讨厌的错误.
和:
-Wextra
这使得一些选项也很好.大多数都是针对C++的.