除了设置-Wall和设置之外-std=XXX,还有哪些其他真正有用但鲜为人知的编译器标志可用于 C 语言?
-Wall
-std=XXX
我对任何额外的警告特别感兴趣,和/或在某些情况下将警告变成错误,以绝对减少任何意外的类型不匹配。
几个-f代码生成选项很有趣:
-f
-fverbose-asm如果您正在编译-S以检查程序集输出,这很有用 - 它添加了一些信息性注释。
-fverbose-asm
-S
-finstrument-functions添加代码以在每个函数入口和出口点调用用户提供的分析函数。
-finstrument-functions
--coverage检测程序中的分支和调用,并创建一个覆盖注释文件,以便在程序运行时生成覆盖数据,该数据可由gcov程序格式化以帮助分析测试覆盖。
--coverage
gcov
-fsanitize={address,thread,undefined}分别启用 AddressSanitizer、ThreadSanitizer 和 UndefinedBehaviorSanitizer 代码清理程序。这些检测程序以在运行时检查各种错误。
-fsanitize={address,thread,undefined}
之前也提到过这个答案-ftrapv,但是这个功能已经被它所取代,-fsanitize=signed-integer- overflow它是由-fsanitize=undefined.
-ftrapv
-fsanitize=signed-integer- overflow
-fsanitize=undefined