6

以下代码在 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 对像我这样的新程序员的帮助非常有帮助。

4

2 回答 2

15

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

#define NOMINMAX
#include <windows.h>
于 2013-02-02T00:59:53.007 回答
3

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

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

于 2013-02-02T13:23:17.110 回答