遇到了一个很抽象的问题,简单记录一下:
问题代码:
#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