我最近添加了:
#define NOMINMAX
#include <Windows.h>
#include <algorithm>
添加到我的main.cpp,以便使用
std::max( x , x ); // x is just a placeholder and not actual anything
std::min( x , x );
但我不能在其他文件中使用std::max()/std::min()
。
error C2589: '(' : illegal token on right side of '::'
error C2059: syntax error : '::'
我尝试在其他文件中添加#define NOMINMAX
,但失败了。线索是什么?
我在问之前环顾了一下,但我不明白答案Possible problems with NOMINMAX on Visual C++
发布于 2012-11-16 16:45:35
如果你真的不顾一切,那就用括号把函数名括起来:
(std::min)(x, y);
这种语法不会应用类似函数的宏。(正式地,要应用类似函数的宏,宏的名称后面必须跟可选的空格,然后是‘(’)。)
发布于 2012-11-16 12:22:14
通过编译器标志定义NOMINMAX
:
> cl.exe -DNOMINMAX ...
然后,将为所有源文件定义此属性。我不使用IDE,但此页面提供了导航集成开发环境进行设置的指南:Using STL in Windows Program Can Cause Min/Max Conflicts
只定义了NOMINMAX预处理器符号。这可以在Developer Studio项目中,在Build,Settings下,在C/C++选项卡上的Preprocessor类别中完成。这将禁止Windef.h中的最小和最大定义。
发布于 2014-12-17 09:28:04
如果您定义NOMINMAX,因为您更喜欢STL版本,那么在包含使用最小/最大宏的gplius.h时可能会遇到问题。作为解决方案,您需要包含STL标头,并在包含gplitus.h之前使用"using namespace std“。
在示例中:
#define NOMINMAX
// Include C++ headers
#include <algorithm>
using namespace std;
// Include Windows headers
#include <windows.h>
#include <gdiplus.h>
https://stackoverflow.com/questions/13416418
复制