首页 > 后端开发 > C++ > 正文

提高 C 代码质量的最佳 g 警告标志是什么,应仔细考虑或排除哪些警告?

Linda Hamilton
发布: 2024-11-17 13:22:01
原创
848 人浏览过

What are the best g   warning flags for enhancing C   code quality, and which warnings should be considered carefully or excluded?

C 中彻底而详细的 g 警告标志

与 gcc 下的 C 类似,一套全面的警告标志可以极大地提高 C 中的代码质量。对于 C ,推荐的标志如下:

-pedantic -Wall -Wextra -Wcast-align -Wcast-qual -Wctor-dtor-privacy -Wdisabled-optimization -Wformat=2 -Winit-self -Wlogical-op -Wmissing-declarations -Wmissing-include-dirs -Wnoexcept -Wold-style-cast -Woverloaded-virtual -Wredundant-decls -Wshadow -Wsign-conversion -Wsign-promo -Wstrict-null-sentinel -Wstrict-overflow=5 -Wswitch-default -Wundef -Werror -Wno-unused
登录后复制

可疑警告

虽然上面的列表涵盖了最有用的警告,但也包括某些可疑警告:

  • Wno-unused: 此警告表示未使用的变量,这对于识别潜在不必要的代码非常有用。但是,它可能会产生误报,其有用性取决于编码风格。
  • Wdisabled-optimization: 此警告标记无法优化的代码部分。它可以帮助识别潜在的代码改进,但可能会产生误报。
  • Wfloat-equal: 此警告警告在浮点运算中使用精确的数值比较,这可能会产生不确定的结果,因为舍入误差。它可能并不普遍适用。
  • Wold-style-cast: 此警告是通过使用旧式的转换触发的。虽然它可以帮助识别潜在的可移植性问题,但它也可能会在库代码中生成误报。
  • Wsign-conversion: 此警告表示有符号和无符号整数之间可能存在不安全的转换。包含它是为了安全,但可能会产生许多误报,需要仔细分析。
  • Wsign-promo: 与 Wsign-conversion 类似,此警告标记有符号整数隐式提升为更大类型。它可以帮助识别潜在的溢出问题。
  • Wswitch-default: 此警告强制在 switch 语句中使用默认情况。这有助于确保所有可能的情况都得到处理,但并不总是理想的。

不包括警告

由于各种原因,某些警告被排除在默认列表之外:

  • Wabi: 不适用于二进制兼容性不是问题的情况。
  • Waggregate-return: 不被视为错误,作为返回值优化通常会处理任何负面影响。
  • Wconversion: 标志隐式转换,通常是良性的。
  • Weffc : 在未初始化初始值设定项列表中的所有数据成员时会生成太多警告。
  • Winline: 对于内联函数可能并不总是有用
  • Winvalid-pch: 不使用预编译标头时不适用。
  • Wmissing-format-attribute: 不使用时不使用格努扩展。
  • Wno-long-long:可能不适用于 C 0x 及更高版本。
  • Wplined:可以帮助优化类布局但可能并不总是实用
  • Wstack-protector: 不使用 -fstack-protector 则不使用。
  • Wstrict-aliasing: Level 3 包含在 -Wall 中但可能不是必要的。
  • Wswitch-enum: 不适用于所有 switch 语句,因为它需要显式处理枚举更改。
  • Wunsafe-loop-optimizations: 生成许多虚假警告,进行手动验证必要的。
  • Wzero-as-null-pointer-constant:仅限 GCC-4.7 的警告。

通过了解这些警告的优点和局限性,开发人员可以自定义它们以最适合其特定的编码实践和项目要求。

以上是提高 C 代码质量的最佳 g 警告标志是什么,应仔细考虑或排除哪些警告?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板