pcl和windows.h冲突(max/min函数报错)

遇到了一个很抽象的问题,简单记录一下:
问题代码:

#include <Windows.h>
//pcl
#include <pcl/point_cloud.h>
#include <pcl/point_types.h>

运行之后会发现报了一大堆错误,点进去发现pcl中所有的max函数都报错了,这种情况一般就是冲突了。
发现windows.h包含的minwindef.h中有这样一段代码

#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 */

很明显,如果不定义NOMINMAX宏的话,max和min就会被重新define,因此和std中的max和min产生冲突,解决办法很简单,在代码前#define NOMINMAX

猜你喜欢

转载自blog.csdn.net/weixin_44368569/article/details/132404939
今日推荐