以下代码在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.h
和limits
。我确实读过vld.h
试图自己找到问题。经过一些测试后,我发现问题可能来自window.h
vld.h
。很抱歉忘记谷歌了。而且我个人觉得stackoverflow非常有帮助,你的家伙会像我一样为新程序员提供帮助。
答案 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添加此类预处理器变通办法,而不是一直重复它们。