![]() |
1
1
给自己拿一份皮棉。lint是一个静态分析工具,它几乎涵盖了编译器的全部错误和警告,以及一些错误。作为一个经常编写针对不同平台和编译器的代码的人,确保代码通过lint是让代码在所有编译器中运行的一个很好的晴雨表。 近似lint的最佳gcc标志集如下所示: -ansi -pedantic -W -Wall -Wundef -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wcast-qual -Wwrite-strings -Weffc++ 我也经常用 -Wno-long-long如果我要编写64位代码,因为许多编译器抱怨长长不是C++类型。 *编辑:修复命令行选项中的复制和粘贴错误 |
![]() |
2
2
令人恼火的是,Visual Studio中的C语言(甚至是Visual Studio 2010的测试版!)是旧的,不支持所有的C99功能,能够混合声明和可执行语句可能是最令人恼火的。最坏的选择可能是编译为C++,而不是在这个平台上编译,即使它需要重新排列代码以使其既有效C++又有效C.。 除此之外,正如肯的评论所说,“写一次测试无处不在是生活的一个事实”。lint是一个很好的帮助(如Chris所写),但是要找到语法和语义上的所有不兼容之处,您真正需要在几个编译器和系统上编译和测试您的程序。这样做实际上有助于发现代码中的错误和问题,即使您不打算在多个系统上实际运行程序。 |
![]() |
3
0
添加
这就是说,你可能会发现MSVC还有其他的怪癖,因为它是一个完全不同的编译器,有自己的警告——所以你可能也需要调整它的选项。 |
![]() |
4
0
使用-wall和lint可以节省很多时间,因为它们可以帮助您更好地理解代码。重新编写代码以最小化安全忽略警告。您将不太可能为难以重现的运行时失败而苦恼。此外,维护您的代码的人会发现更容易进行更改。 在使用Visual Studio时,请浏览类似lint的工具的编译选项。我忘了它们在哪里,它们减慢了你的建造速度,但它们是有用的。 |
![]() |
Sato · 如何使gcc警告未定义的结构? 7 年前 |
![]() |
Goovie · 为什么clang需要-lm而不是gcc? 7 年前 |
![]() |
Peter VARGA · gcc不警告“变量已设置但未使用” 9 年前 |
![]() |
Daniele E. Domenichelli · 继承自已弃用的类 9 年前 |
![]() |
Ilya · 使用数组类时出现奇怪的警告 9 年前 |
![]() |
tohava · 将GCC中的“删除”警告变为错误 10 年前 |