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