点云技术相关产学研社区

 找回密码
 立即注册加入PCL中国点云技术相关产学研社区

扫一扫,访问微社区

查看: 1748|回复: 0

std::numeric_limits<int>::max () 引起PCL编译错误

[复制链接]
发表于 2017-10-26 16:06:52 | 显示全部楼层 |阅读模式
下面这种方式是baidu出来的解决方法,不过有更简单的方法
今天使用了一下STL中的z数值极限<Numeric Limits>竟然编译不过,
std::numeric_limits<double>::max()
出现如下错误:
warning     C4003:     “max”宏的实参不足      
error     C2589:     “(”     :     “::”右边的非法标记


google了一下,原来是需要把max用括号括起来避免和windows定义的宏混淆
(std::numeric_limits<double>::max)()

因为Windef.h中定义了
#ifndef max
#define max(a,b)            (((a) > (b)) ? (a) : (b))
#endif

所以会产生编译错误

简单方法:
你如果用cmake对工程进行管理,只需要加一行,就搞定了。
add_definitions(-DNOMINMAX)
或者你在工程里面,添加该预处理定义。
回复

使用道具 举报

本版积分规则

QQ|小黑屋|点云技术相关产学研社区 ( 陕ICP备13001629号 )

GMT+8, 2024-4-29 02:19 , Processed in 2.270009 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表