窗口和限制的冲突

Conflict of windows.h and limits?

本文关键字:冲突 窗口      更新时间:2023-10-16

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

这是一个

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

#define NOMINMAX
#include <windows.h>

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

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