12

我想使用 Microsoft Visual C++ 编译器将我的警告设置为最高级别。类似于在 gcc 上使用 -pedantic。您使用哪些编译器开关来启用最多警告?

4

6 回答 6

12

Visual C++ 上的最高警告级别是 /Wall。警告级别也可以使用 /W0、/W1、... /W4 以数字方式设置,以生成不断增加的警告级别。

编译器还将检查 /Wp64 的 64 位可移植性问题。

您可以使用 /WX 告诉它将警告视为错误

Visual C++ 似乎没有真正的等效于 -pedantic - 它要求 gcc 报告 ISO C 和 C++ 标准要求报告的所有警告。

于 2008-10-20T23:48:24.803 回答
5

正如billmcc64提到的那样,如果您使用任何非标准扩展,gcc 的 -pedantic 会导致 gcc 发出警告。我不认为您可以让 MSVC 对类似情况发出警告,但您可以使用 /Za 选项使其在这些情况下生成错误。

于 2008-10-21T00:15:13.017 回答
4

请注意,Microsoft 不建议使用 /Wp64,而是尽可能直接为 64 位平台编译。

另请注意,Team Developer 版本有一个 /analyze 选项,它添加了对常见代码错误的语义检查。您还可以查看从 gimpel 获取 PC-lint 以进行额外的语义检查。

于 2008-10-21T00:04:15.863 回答
3

如果您想要类似 -pedantic 的东西,请尝试使用 pc-lint(http://www.gimpel.com/html/products.htm)之类的优质 lint。

于 2008-10-21T00:37:12.163 回答
3

/permissive-查看Visual Studio 2017 及更高版本支持的新选项。从 Windows Fall Creators SDK (10.0.16299.0) 开始,该/permissive-选项与最新 Windows 工具包中的几乎所有头文件兼容,例如软件开发工具包 (SDK) 或 Windows 驱动程序工具包 (WDK)。/permissive-由于各种源代码一致性原因,旧版本的 SDK 可能无法编译。

还有禁用所有语言扩展的选项,但是当使用来自Windows 工具包的头文件(例如winnt.hwinioctl.h/Za时,这也会导致编译错误。所以,这个选项实际上并不可行。

See: https://docs.microsoft.com/en-us/cpp/build/reference/permissive-standards-conformance

于 2020-08-23T01:54:39.520 回答
1

/W4 /Wall应该做的伎俩。

于 2008-10-20T23:34:29.963 回答