【问题标题】:Conflict of windows.h and limits? [closed]windows.h 和限制的冲突? [关闭]
【发布时间】:2013-02-02 00:55:56
【问题描述】:

以下代码在 VS2010 中不起作用。是什么原因?

#include <limits>
#include <windows.h> // if I remove this line, it is okay.

int main()
{
    std::numeric_limits<int>::min();
    return 0;
}

我创建了一个 VC 空控制台项目并添加了一个 main.cpp 如上所述。是这个原因吗?我是否需要创建另一种项目?谢谢。

感谢你们的帮助。问题来自我同时使用vld.hlimits。我确实阅读了vld.h,试图自己找出问题所在。经过一些测试,我发现问题可能来自vld.h 包含的window.h。抱歉忘记谷歌了。而且我个人认为 stackoverflow 对你们这些对像我这样的新程序员的友好帮助非常有帮助。

【问题讨论】:

  • 也许我在这里遗漏了一些东西,但是“不是真正的问题”投票是怎么回事?人们是否只是觉得他们有一个需要填写的“关闭问题配额”?
  • @Rapptz:但它提供了足够的信息来解决问题。诚然,它没有问号,但实际上,SO 曾经是关于帮助 解决编程问题的人。他描述了一个真实的问题,提供了足够的信息,让熟悉它的人可以回答它,而且,这还不够好,我们应该容忍它被回答吗?
  • 问的内容很清楚。如果你没有得到这个问题并不意味着它是“不真实的”。
  • @BrianRoach:是的...但是如果您在 SO 上花费的时间超过几个小时,那么您应该知道“您应该在 Google 上搜索它”是从不 此处的有效响应。 SO 的目标是有效地确保如果你用谷歌搜索它,你最终会在这里,在那里你可以依靠你得到的高质量的答案。告诉人们谷歌它会适得其反,而且不是很有帮助
  • @BrianRoach:好吧,我很抱歉,但您不同意该网站的创始人 Jeff 和 Joel 的直接引用。所以如果你愿意,我们可以不同意,但在这件事上,我碰巧是对的,而你不是。倒霉。 :) 归根结底,有些人实际上打算让这个网站有用。如果您告诉人们“去谷歌搜索它并依赖一个任意且未经审查的答案,您无法衡量其质量”,而不是在此处发布可以由您的同行判断和评估的答案

标签: c++ limit


【解决方案1】:

这是一个由windows.h 中定义的不幸的max 宏引起的已知问题(实际上,windef.h 包含在windows.h 中,更准确地说)。在包含windows.h 之前定义NOMINMAX 应该可以解决问题。例如:

#define NOMINMAX
#include <windows.h>

【讨论】:

    【解决方案2】:

    有时#define NOMINMAX 不起作用(我见过这样的例子),那么你总是可以#undef MIN & #undef MAX

    此外,当您使用 VS2010 时,通常最好将此类用于 Windows 的预处理器解决方法放在 stdafx.h 中,并且不要一直重复它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-27
      • 2021-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-27
      • 2021-01-29
      • 1970-01-01
      相关资源
      最近更新 更多