在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
在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宏定义冲突。 #include <windows.h> #include <algorithm> (std::min)(100,2000); (std::max)(10,500); 解决方案二禁用Windows.h中的min、max宏定义。 在Windows.h中可以查阅到min、max的定义为: #ifndef NOMINMAX #ifndef max #define max(a,b) (((a) > (b)) ? (a) : (b)) #endif #ifndef min #define min(a,b) (((a) < (b)) ? (a) : (b)) #endif #endif /* NOMINMAX */ 看懂了定义就很简单了,在包含Windows.h文件之前直接定义一个NOMINMAX宏定义就OK了,如下代码所示: #define NOMINMAX #include <windows.h> #include <algorithm> std::max(100, 200); 解决方案三:这个解决办法与第二个本质是一样的。具体方法为:打开工程属性->C/C++->预处理器->预处理器定义->加入NOMINMAX
OK,经过上面的操作,min,max操作已经正常了。 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论