无法使用stl中max和min的原因
2008-03-10 11:19
211 查看
问题:使用std::numeric_limits<int>::max方法时,编译器报warning C4003: “max”宏的实参不足。使用std::max、std::min和定义名为max、min方法时也报错。
原因:由于头文件Windows.h中的定义了宏max和min造成的。在Windows.h头文件中定义了宏max和min,Preprocessor就认为我们使用的是宏max或min,而再调用时调用方法和参数与定义的宏不一致,所以报错。
解决方案:用括号来改变Preprocessor对方法名的理解。
例:
// 使用numeric_limits中的max方法
(std::numeric_limits<Byte>::max)()
// 使用stl中的max方法
(std::max)( 1, 2 );
// 自定义名为max的方法
struct Number
{
int (max)();
};
参见:http://www.jeffhung.net/blog/articles/jeffhung/626/
原因:由于头文件Windows.h中的定义了宏max和min造成的。在Windows.h头文件中定义了宏max和min,Preprocessor就认为我们使用的是宏max或min,而再调用时调用方法和参数与定义的宏不一致,所以报错。
解决方案:用括号来改变Preprocessor对方法名的理解。
例:
// 使用numeric_limits中的max方法
(std::numeric_limits<Byte>::max)()
// 使用stl中的max方法
(std::max)( 1, 2 );
// 自定义名为max的方法
struct Number
{
int (max)();
};
参见:http://www.jeffhung.net/blog/articles/jeffhung/626/
相关文章推荐
- max,min无法使用的问题
- LINQ当集合为空的时候,如何使用Max,Min,Sum等聚合函数?
- 【转载】:【C++跨平台系列】解决STL的max()与numeric_limits::max()和VC6 min/max 宏冲突问题
- 4、内置函数abs、all、any、min、max使用方法
- C++ *max_element函数找最大元素 *min_element函数找最小元素 STL算法(找时间看)
- CSS3 响应式布局: 使用@media (min/max-width:***) 和@font-face及其兼容
- wireshark使用过程无法抓取前序和FCS或出现IP报头校验和错误--原因
- Unity5.x 使用GUI Texture 载入图片后显示太大的,使用PixelInsert也无法修正的原因
- PHP函数体外的变量无法传入内函数使用原因
- EF 汇总函数使用注意事项Max()/Min()等
- STL fill()填充算法以及for_each()算法 取容器中的最大最小值min_element,max_element
- [转载]同一页面无法多次使用XmlHttp发起Ajax请求的真实原因
- ruby应用里添加zepto.min.js但是无法使用里面的方法
- 使用stl标准容器,遍历容器时出现 iterators incompatible 错误的其中两种原因
- 使用链接服务器无法使用transaction查询的错误原因和解决办法。
- php5.2下添加php_mongo.dll扩展无法使用的原因及解决办法
- 使用Math.max,Math.min获取数组中的最值
- Android Studio中使用git功能无法clone原因分析
- “在使用Samba进行建立Wisamba无法访问,你可能没有权限使用网络”的一种问题原因及解决