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)();