在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宏定义冲突。
1 2 3 4 |
|
ui->lineEdit_workpiece_spacing->setValidator(new QDoubleValidator(0.0, (std::numeric_limits<double>::max)(), 5, this));
解决方案二【不推荐】
禁用Windows.h中的min、max宏定义。
在Windows.h中可以查阅到min、max的定义为:
01 02 03 04 05 06 07 08 09 10 11 |
|
看懂了定义就很简单了,在包含Windows.h文件之前直接定义一个NOMINMAX宏定义就OK了,如下代码所示:
1 2 3 4 |
|
OK,经过上面的操作,min,max操作已经正常了。