std::max、std::min error C2589: “(”:“::”右边的非法标记,error C2059: 语法错误:“::”
2017-06-13 16:11
585 查看
在VC++种同时包含头文件#include <windows.h>和#include <algorithm>后就会出现无法正常使用std标准库中的min和max模板函数,经过查阅发现这是因为在Windows.h种也有min和max的定义,这样就导致了algorithm中的min和max无法正常使用,这里给出两种解决方案,来解决std命名空间无法使用min和max的问题。
使用std::min或者std::max的时候加上括号,避免与Windows.h中的min、max宏定义冲突。
禁用Windows.h中的min、max宏定义。
在Windows.h中可以查阅到min、max的定义为:
看懂了定义就很简单了,在包含Windows.h文件之前直接定义一个NOMINMAX宏定义就OK了,如下代码所示:
OK,经过上面的操作,min,max操作已经正常了。
解决方案一
使用std::min或者std::max的时候加上括号,避免与Windows.h中的min、max宏定义冲突。
解决方案二
禁用Windows.h中的min、max宏定义。在Windows.h中可以查阅到min、max的定义为:
相关文章推荐
- std::max、std::min error C2589: “(”:“::”右边的非法标记,error C2059: 语法错误:“::”
- cv::max、cv::min error C2589: “(”:“::”右边的非法标记,error C2059: 语法错误:“::”
- error C2589: “(”: “::”右边的非法标记 error C2059: 语法错误 : “::
- error C2589: “(”: “::”右边的非法标记;error C2059: 语法错误 : “::”
- error C2589: “(”: “::”右边的非法标记 error C2059: 语法错误 : “::”
- error C2059: 语法错误:“::” error C2589: “(”:“::”右边的非法标记
- error C2589: “(”: “::”右边的非法标记 error C2059: 语法错误 : “::
- error C2059: 语法错误:“::” error C2589: “(”:“::”右边的非法标记
- error C2589: “(”: “::”右边的非法标记;error C2059: 语法错误 : “::”
- error C2589: “(”: “::”右边的非法标记;error C2059: 语法错误 : “::”
- error C2589: “(”: “::”右边的非法标记;error C2059: 语法错误 : “::”
- 【VS2013】error C2059: 语法错误:“::” error C2589: “(”:“::”右边的非法标记
- PCL -语法错误:“::” error C2589: “(”:“::”右边的非法标记
- QT引用OpenCV出现错误:warpers_inl.hpp:146: error: C2589: “(”:“::”右边的非法标记
- DeeplearningLib 错误 C2589 “(”:“::”右边的非法标记
- max 宏定义取消:error C2589: “(”: “::” error C2059: 语法错误 : “::”
- error C2589: “(”:“::”右边的非法标记错误的处理
- vs2010, error C2059: 语法错误:“namespace” error C2334: “{”的前面有意外标记;跳过明显的函数体
- std::max, std::min错误
- QT5.0 以上版本qdatetime.h:122: error: C2589: “(”:“::”右边的非法标记