C++ windows.h和限制冲突?

C++ windows.h和限制冲突?,c++,limit,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; } #包括 #包括//如果我删除这一行,就可以了。 int main() { 标准::数值限制::最小(); 返回0; } 我创建

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

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

int main()
{
    std::numeric_limits<int>::min();
    return 0;
}
#包括
#包括//如果我删除这一行,就可以了。
int main()
{
标准::数值限制::最小();
返回0;
}
我创建了一个VC空控制台项目,并如上所述添加了main.cpp。这是原因吗?我需要创建另一种项目吗?谢谢


谢谢你们的帮助。问题来自于我同时使用和
限制。我确实阅读了
vld.h
,试图自己找出问题所在。经过一些测试后,我发现问题可能来自
window.h
,该
vld.h
包括。对不起,忘记用谷歌搜索了。我个人认为stackoverflow对你们这些人对我这样的新程序员的帮助非常有用。

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

#define NOMINMAX
#include <windows.h>
#定义NOMINMAX
#包括
有时
#define NOMINMAX
不起作用(我见过这样的例子),那么您可以始终
#undef MIN
#undef MAX


另外,当您使用VS2010时,最好将windows的预处理器解决方案放在
stdafx.h
中,不要一直重复它们。

也许我在这里遗漏了一些东西,但是“不是真正的问题”投票怎么了?人们只是觉得他们有一个“接近的问题配额”需要填补吗?@Rapptz:但它提供了足够的信息来解决这个问题。诚然,它没有一个问号,但实际上,它曾经是关于帮助人们解决编程问题的。他描述了一个真实的问题,提供了足够的信息,让熟悉它的人能够回答它,那么,这还不够好,以至于我们应该容忍它被回答吗?关于被问到的问题,这是非常清楚的。如果你不明白这个问题并不意味着它是“不真实的”。@BrianRoach:是的。。。但是,如果你花了超过几个小时的时间在上面,那么你应该知道“你应该用谷歌搜索一下”在这里永远不是一个有效的回答。SO的目标是有效地确保如果你在谷歌上搜索它,你会在这里结束,在那里你可以依靠高质量的答案。告诉人们去谷歌是适得其反的,也不是很好helpful@BrianRoach:很抱歉,你不同意该网站创始人杰夫和乔尔的直接引述。所以,如果你愿意,我们可以不同意,但在这件事上,我碰巧是对的,而你不是。运气不好。:)归根结底,有些人确实希望这个网站有用。如果你告诉人们“去谷歌搜索它,依靠一个你无法衡量其质量的任意的、不成文的答案”,而不是在这里发布一个答案,让你的同龄人来判断和评估,这是没有用的