使用Microsoft的Visual C ++编译器时,是否存在与gcc相当的-pedantic?

时间:2008-10-20 23:29:00

标签: visual-c++ compiler-warnings

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

6 个答案:

答案 0 :(得分:9)

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

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

你可以告诉它用/ WX

将警告视为错误

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

答案 1 :(得分:4)

AS billmcc64 mentioned,如果您使用任何非标准扩展名,gcc的-pedantic会导致gcc发出警告。我不认为你可以让MSVC警告类似的情况,但你可以使用/ Za选项导致它为这些情况产生错误。

答案 2 :(得分:2)

请注意,Microsoft不建议使用/ Wp64,而不是直接针对64位平台进行编译。

另请注意,Team Developer版本具有/ analyze选项,可为常见代码错误添加语义检查。您还可以查看从gimpel获取PC-lint以进行其他语义检查。

答案 3 :(得分:2)

如果你想要像-pedantic这样的东西,可以试试像pc-lint(http://www.gimpel.com/html/products.htm)这样的好皮带。

答案 4 :(得分:0)

/W4 /Wall应该可以解决问题。

答案 5 :(得分:0)

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

还有一个/Za选项可禁用所有语言扩展,但是当使用 Windows Kits 中的头文件(例如 winnt.h winioctl.h )。因此,此选项实际上并不可行。

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