我想使用 Microsoft Visual C++ 编译器将我的警告设置为最高级别。类似于在 gcc 上使用 -pedantic。您使用哪些编译器开关来启用最多警告?
6 回答
Visual C++ 上的最高警告级别是 /Wall。警告级别也可以使用 /W0、/W1、... /W4 以数字方式设置,以生成不断增加的警告级别。
编译器还将检查 /Wp64 的 64 位可移植性问题。
您可以使用 /WX 告诉它将警告视为错误
Visual C++ 似乎没有真正的等效于 -pedantic - 它要求 gcc 报告 ISO C 和 C++ 标准要求报告的所有警告。
正如billmcc64提到的那样,如果您使用任何非标准扩展,gcc 的 -pedantic 会导致 gcc 发出警告。我不认为您可以让 MSVC 对类似情况发出警告,但您可以使用 /Za 选项使其在这些情况下生成错误。
请注意,Microsoft 不建议使用 /Wp64,而是尽可能直接为 64 位平台编译。
另请注意,Team Developer 版本有一个 /analyze 选项,它添加了对常见代码错误的语义检查。您还可以查看从 gimpel 获取 PC-lint 以进行额外的语义检查。
如果您想要类似 -pedantic 的东西,请尝试使用 pc-lint(http://www.gimpel.com/html/products.htm)之类的优质 lint。
/permissive-
查看Visual Studio 2017 及更高版本支持的新选项。从 Windows Fall Creators SDK (10.0.16299.0) 开始,该/permissive-
选项与最新 Windows 工具包中的几乎所有头文件兼容,例如软件开发工具包 (SDK) 或 Windows 驱动程序工具包 (WDK)。/permissive-
由于各种源代码一致性原因,旧版本的 SDK 可能无法编译。
还有禁用所有语言扩展的选项,但是当使用来自Windows 工具包的头文件(例如winnt.h和winioctl.h)/Za
时,这也会导致编译错误。所以,这个选项实际上并不可行。
See: https://docs.microsoft.com/en-us/cpp/build/reference/permissive-standards-conformance
/W4 /Wall
应该做的伎俩。