windows.h的冲突和限制?

时间:2013-02-02 00:55:57

标签: c++ limit

以下代码在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试图自己找到问题。经过一些测试后,我发现问题可能来自window.h vld.h。很抱歉忘记谷歌了。而且我个人觉得stackoverflow非常有帮助,你的家伙会像我一样为新程序员提供帮助。

2 个答案:

答案 0 :(得分:14)

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

#define NOMINMAX
#include <windows.h>

答案 1 :(得分:3)

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

此外,当您使用VS2010时,通常最好在stdafx.h中为Windows添加此类预处理器变通办法,而不是一直重复它们。