使用 g 进行 C 编译的彻底且详细的警告标志
Gcc 提供了一套全面的警告标志来帮助开发人员检测潜在问题他们的代码。要在 C 中启用彻底且详细的警告,请考虑以下建议:
基本警告:
-
-迂腐:遵守严格C语言标准。
-
-Wall:激活所有普遍接受的警告。
-
-Wextra:将警告范围扩大到-Wall之外。
-
-Wcast-align:检测未对齐的指针转换。
-
-Wcast-qual:警告指针类型限定符的更改。
-
-Wctor-dtor-privacy:突出显示类构造函数和析构函数访问修饰符的问题。
-
-Wdisabled-optimization:识别可以优化但不能优化的代码.
-
-Wformat=2:改进编译期间的格式说明符处理。
-
-Winit-self:防止变量重新初始化为自身。
-
-Wlogic-op:检测潜在的运算符优先级问题。
-
-Wmissing-declarations:警告变量和函数的缺失声明。
-
-Wmissing-include-dirs:突出显示缺少的包含目录。
-
-Wnoexcept:鼓励异常处理机制。
-
-Wold-style-cast:识别潜在的代码兼容性问题。
-
-Woverloaded-virtual:警告虚拟方法重载。
-
- Wredundant-decls:指出多余的声明。
-
-Wshadow:防止变量的无意遮蔽。
-
-Wsign-conversion :检测可能的符号转换错误。
-
-Wsign-promo:突出显示潜在的符号提升问题。
-
-Wstrict-null-sentinel :通过控制 null 哨兵值来增强代码安全性。
-
-Wstrict-overflow=5:将整数溢出级别限制为五个警告。
-
-Wswitch -default:确保全面的 switch 语句处理。
-
-Wundef:警告未定义的变量或宏。
-
-Wno-unused :排除未使用的变量警告,以加强对更关键问题的关注。
可选但有问题的警告:
-
-Wdisabled-optimization:可能指示次优代码,但不一定是错误。
-
-Wfloat-equal:可能会导致误报安全相等比较。
-
-Wold-style-cast:第三方库中可能存在误报。
-
-Wsign-conversion:需要仔细注意数据类型以防止错误。
-
-Wsign-promo:与 -Wsign-conversion 类似的注意事项。
-
-Wswitch-default:强制显式处理 switch 语句情况,但可能很乏味。
要排除的警告:
由于潜在的误报或有限,这些警告被省略utility:
-
-Wabi:需要编译来自不同来源的二进制文件。
-
-Waggregate-return:可能指示隐式数据类型转换。
-
-Wconversion:可能会生成无害隐式转换的警告。
-
-Weffc :可能会混杂着不相关的警告。
-
-Winline:可能不适用于所有内联方法场景。
-
-Winvalid-pch:不适用于不使用预编译的项目
-
-Wmissing-format-attribute:需要不常用的 GNU 扩展。
-
-Wpadd:需要手动优化类布局。
-
-Wstack-protector:需要特定的编译器标志进行堆栈保护。
-
-Wstrict-aliasing=3:与较低级别。
-
-Wswitch-enum:限制过于严格,可能并不适合所有用例。
-
-Wunsafe-loop-optimizations :在某些情况下会生成虚假警告。
以上是我应该使用哪些警告标志来进行彻底的 C 代码分析?的详细内容。更多信息请关注PHP中文网其他相关文章!