Windows下用vs编译std::numeric_limits::max()
和 std::numeric_limits::min()时,出现如下错误:
error C2589: '(' : illegal token on right side of '::'
error C2059: syntax error : '::'
error C2059: syntax error : '::'
原因:
Windef.h中已经定义了
#ifndef max
#define max(a,b) (((a) > (b)) ? (a) : (b))
#endif
#ifndef min
#define min(a,b) (((a) < (b)) ? (a) : (b))
#endif
所以才会产生编译错误#define max(a,b) (((a) > (b)) ? (a) : (b))
#endif
#ifndef min
#define min(a,b) (((a) < (b)) ? (a) : (b))
#endif
解决办法是把std里的max和min用括号括起来,避免和windows定义的宏混淆,如下
(std::numeric_limits::max)()
(std::numeric_limits::min)()
Windows环境下解决std::numeric_limits编译错误
在Windows上使用Visual Studio(VS)编译C++代码时,遇到使用std::numeric_limits获取最大值(max)和最小值(min)时的编译错误。错误可能涉及到类型转换或模板实例化问题。
896

被折叠的 条评论
为什么被折叠?



