【问题标题】:Are standard library warnings normal?标准库警告是否正常?
【发布时间】:2010-10-20 08:04:58
【问题描述】:

我目前正在学习视觉工作室。如果我设置了/Wall,我会收到看似不健康的警告消息,尽管我的应用程序可以正常编译。

这正常吗?更改错误级别将停止消息。看起来好像它们都与 C++ STL 或其头文件有关——同样的事情?

如果我使用 code::blocks (GCC) 构建程序,那么尽管警告级别相同,但不会报告任何错误。

这是怎么回事?

更新: 视觉工作室/Wall 输出:http://pastebin.com/FBGLd2Hb

视觉工作室/W4 输出:http://pastebin.com/YuWKVS9G

代码实际上来自 Wrox Professional C++。 我对警告这个词的使用可能是错误的?

【问题讨论】:

  • 我们想告诉您这些警告是否正常,但我们无法猜测这些警告是什么:)
  • 好点。更新了相关输出的链接。
  • 超过 3000 条警告?!太疯狂了 oO 我会检查我的一个项目,看看我是否可以重现这个。

标签: c++ visual-studio stl compiler-warnings


【解决方案1】:

使用 g++ -Wall 不会打开所有警告,只是一个实用的子集。我怀疑使用 MSVC /Wall 会打开比实际更多的警告。 MSVC 非常热衷于警告。

对于 MSVC,使用 /W4 表示高警告级别。

你必须关闭 MSVC sillywarnings;你可以使用我的anti-MSVC-sillywarnings header

干杯,

【讨论】:

  • @ereOn:该文件关闭的警告很少表明真正的问题。如果他们这样做,那是偶然的。然而,警告的负面影响是真实的。您是第一个认为这些警告中的任何一个都表明存在真正问题的人。相当多的人参与了该列表的构建。干杯&hth.,
  • @Alf P. Steinbach: "disable:4099", "first seen using 'struct' now seen using 'class'" --> 这是一个真正的问题,C++ 并不强制要求两者都解决到有效授权编译器发出不同(损坏)名称的同一实体。我似乎记得 MSVC 做到了,也许它不再。无论如何,这很容易解决。显式处理所有枚举值也是一件好事(至少,对于文档而言)。我想你可能也有点太热情了:)
  • @Mattieu:关于 4099,这是一个判断电话。您可以通过一些示例阅读我的想法,here,它——嘿——链接回 StackOverflow……也许在某些商店里最好打开它。关于switch 中的枚举值,我记得即使您有default,它也会发出警告,因此,滋扰因素非常高。干杯,
  • @jalf:快完成了。今晚我要和史蒂夫鲍尔默一起吃饭。让你发布:)
  • 关于“愚蠢的警告”,有些甚至在 MSDN 参考文献中有错误。例如msdn.microsoft.com/en-us/library/2cf74y2b.aspx 解释说您收到警告是因为无法实例化此类(所以如果我尝试了为什么不给出错误!?),但是示例中的 struct can 被实例化为一个聚合 - 即使使用 VC++ :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-12
  • 2017-04-02
  • 1970-01-01
  • 1970-01-01
  • 2012-02-29
  • 2019-08-06
相关资源
最近更新 更多