Maxbad`Blog

标准库std::min/std::max与min/max宏冲突的解决方案

2020-05-09 · 1 min read

如题,因为windef.h中定义了maxmin宏.
如果工程中包含了windows.hwindef.h头文件,再使用c++标准库std::minstd::max,就会发生编译错误。

方案一

程序里面使用宏 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 */

方案二:

程序里面要使用标准库 std::min和std::max

#define NOMINMAX
#undef max
#undef min