error C2589: “(”:“::”右边的非法标记

在引用MQTT的C++动态库时候,在控制台程序测试没问题,但是移到MFC下就会出现 

warning C4003: “max”宏的实参不足 
error C2589: “(”: “::”右边的非法标记 
error C2059: 语法错误 : “::” 
error C2059: 语法错误 : “)” 
error C2059: 语法错误 : “)”

这样的报错,双击报错定位到下面一行

经过查找原因,MFC引入的一大堆头文件里,Microsoft定义了min/max两个宏,虽然以上代码在自己的namespace里,可还是被被认为是微软定义的宏了;

解决方案:

1,改变代码种的名称,防止跟微软定义的重复

2,加上括号,把max前后用小括号括起来

static constexpr size_type MAX_CAPACITY = (std::numeric_limits<size_type>::max)();

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值