这个问题在这里已经有了答案:PossibleproblemswithNOMINMAXonVisualC++(4个答案)关闭7年前。我想在使用MFC的VisualStudioC++项目中使用#defineNOMINMAX,这样我就可以使用std::min和std::max。但是,当我将此行放入我的stdafx.h时,出现以下编译错误:c:\programfiles(x86)\windowskits\8.0\include\um\GdiplusTypes.h(475):errorC3861:'min':identifiernotfound我不是故意使用GDI+,这是MFC必须做的事情。是否
我最近添加了:#defineNOMINMAX#include#include到我的main.cpp以便使用std::max(x,x);//xisjustaplaceholderandnotactualanythingstd::min(x,x);但我不能在其他文件中使用std::max()/std::min()。errorC2589:'(':illegaltokenonrightsideof'::'errorC2059:syntaxerror:'::'我尝试在我的其他文件中添加#defineNOMINMAX,但失败了。线索是什么?问之前我环顾了一下,但我不明白答案Possibleprob
定义NOMINMAX时会遇到什么问题在我的程序中的任何其他内容之前?据我所知,这将使未定义min和max与STL有很多冲突的宏,例如std::min(),std::max(),或std::numeric_limits::min()解决了。我是否正确地假设只有Windows特定和遗留代码会出现问题?几乎所有的库都不应该依赖min()和max()定义为宏?编辑:其他Windows头文件会不会有问题? 最佳答案 使用NOMINMAX是包含的唯一不完全邪恶的方式.您还应该定义UNICODE和STRICT.尽管后者是由现代实现默认定义的。
定义NOMINMAX时会遇到什么问题在我的程序中的任何其他内容之前?据我所知,这将使未定义min和max与STL有很多冲突的宏,例如std::min(),std::max(),或std::numeric_limits::min()解决了。我是否正确地假设只有Windows特定和遗留代码会出现问题?几乎所有的库都不应该依赖min()和max()定义为宏?编辑:其他Windows头文件会不会有问题? 最佳答案 使用NOMINMAX是包含的唯一不完全邪恶的方式.您还应该定义UNICODE和STRICT.尽管后者是由现代实现默认定义的。