| 禁止使用"-Wno-XXXX"抑制"-Wall"包含的所有警告选项 |
|
| 明确-D编译宏的具体用途,建立-D编译宏的清单 |
|
| -fno-common |
未初始化的全局变量放置在目标文件的数据段 |
| -fvisibility=hidden |
设置默认的ELF镜像中符号的可见性为隐藏 |
| -fsigned-char/-funsigned-char |
显式设置char的类型 |
| -Wl,-Bsymbolic/-rdynamic/-Wl,--no-undefined |
打开如下链接选项 |
| -pipe |
打开总体选项,提升编译速度,消耗更多内存 |
| -Wall |
打开"-Wall"选项,检查有用的警告选项集 |
| -Wextra |
打开"-Wextra"选项,检查除"-Wall"外附加的选项集;"-Wextra"中误报较多的选项,可以使用"-Wno-XXXX"屏蔽 |
| -Wformat=2 |
打开"-Wformat=2"选项,检查格式化输入/输出函数的安全 |
| -Wstrict-prototypes |
打开"-Wstrict-prototypes "选项,避免函数在声明或定义中没有指定参数类型 |
| -Wdate-time |
打开"-Wdate-time"选项,避免使用时间宏,确保二进制一致性 |
| -Wfloat-equal |
打开"-Wfloat-equal"选项,避免浮点数相等比较运算 |
| -Wswitch-default |
打开"-Wswitch-default"选项,确保switch语句有default分支 |
| -Wshadow |
打开"-Wshadow"选项,检查变量覆盖 |
| -Wstack-usage=len |
打开"-Wstack-usage=len"选项,设置栈大小,避免栈溢出 |
| -Wframe-larger-than=len |
打开"-Wframe-larger-than=len" 选项,设置栈框架大小,避免栈溢出 |
| -Wconversion |
打开"-Wconversion"选项,避免隐式转换改变数值 |
| -Wcast-qual |
打开"-Wcast-qual"选项,指针类型强制转换时,避免目标类型丢失类型限定词 |
| -Wcast-align |
打开“-Wcast-align”选项,检查指针类型强制转换,避免目标所需的地址对齐字节数增加 |
| -Wvla |
打开"-Wvla"选项,避免变长数组 |
| -Wunused |
打开"-Wunused"选项,避免无效代码 |
| -Wundef |
打开"-Wundef"选项,避免预编译指令#if语句中出现未定义的标识符 |
| -Wnon-virtual-dtor |
打开"-Wnon-virtual-dtor"选项,避免基类析构函数没有定义虚函数 |
| -Wdelete-non-virtual-dtor |
打开"-Wdelete-non-virtual-dtor"选项,当基类析构函数没有定义虚函数,避免通过指向基类的指针来执行删除操作 |
| -Woverloaded-virtual |
打开"-Woverloaded-virtual"选项,避免隐藏基类虚函数 |