VS2015--win32工程配置的一些想法之GdiplusTypes.h(470) : error C3861: 'min': identifier not found
2016-02-18 00:06
295 查看
一次一次地,乐此不疲的掉入自己挖的坑儿。
之前博客《VS2015–win32工程配置的一些想法之算法min/max与windows中的 min/max宏冲突》写了如何处理algorithm中std:min和windows中min的冲突问题,我们用到了预处理器NOMINMAX。
标准库在
通常用它可以计算某个值对的最小值和最大值。可惜在 Visual C++ 无法使用它们,因为没有定义这些函数模板。原因是名字min和max与
但是当用到GDI相关的时候时候,就会出现另一个错误:
GdiplusTypes.h(470) : error C3861: ‘min’: identifier not found
这时候我就迷茫了,到底咋回事呢?
百度了一圈,全是尼玛坑人的答案,都告诉我预处理定义NOMINMAX。
但是怎么搞都是不对,这才恍然大悟,原来这里是需要min的,我们不能undef掉。
所以在引用gdi的相关头文件前,重新定义min:
上面这么做的前提是你为了解决algorithm中std::min和windows中min的冲突,或是预处理了:NOMINMAX,或是这样:
之前博客《VS2015–win32工程配置的一些想法之算法min/max与windows中的 min/max宏冲突》写了如何处理algorithm中std:min和windows中min的冲突问题,我们用到了预处理器NOMINMAX。
标准库在
<algorithm>头中定义了两个模板函数std::min() 和 std::max()。
通常用它可以计算某个值对的最小值和最大值。可惜在 Visual C++ 无法使用它们,因为没有定义这些函数模板。原因是名字min和max与
<windows.h>中传统的min/max宏定义有冲突。为了解决这个问题,Visual C++ 定义了另外两个功能相同的模板:_cpp_min() 和 _cpp_max()。我们可以用它们来代替std::min() 和 std::max()。为了禁用Visual C++中的 min/max宏定义,可以在包含
<windows.h>头文件之前加上:NOMINMAX
但是当用到GDI相关的时候时候,就会出现另一个错误:
GdiplusTypes.h(470) : error C3861: ‘min’: identifier not found
这时候我就迷茫了,到底咋回事呢?
百度了一圈,全是尼玛坑人的答案,都告诉我预处理定义NOMINMAX。
但是怎么搞都是不对,这才恍然大悟,原来这里是需要min的,我们不能undef掉。
所以在引用gdi的相关头文件前,重新定义min:
[code]#ifndef min #define min #endif #include <GdiPlus.h>
上面这么做的前提是你为了解决algorithm中std::min和windows中min的冲突,或是预处理了:NOMINMAX,或是这样:
[code]#undef min
相关文章推荐
- 三种iOS应用程序用户数据存储方法
- python-Day4-迭代器-yield异步处理--装饰器--斐波那契--递归--二分算法--二维数组旋转90度--正则表达式
- C#文件操作的两种方式
- 00
- ASP.NET中实现导出ppt文件数据的实例分享
- Python利用Nagios增加微信报警通知的功能
- python装饰器与递归算法详解
- 使用Python来编写HTTP服务器的超级指南
- 使用Python的PIL模块来进行图片对比
- 讲解Python的Scrapy爬虫框架使用代理进行采集的方法
- 使用Python的urllib2模块处理url和图片的技巧两则
- 使用Python生成随机密码的示例分享
- 以一个投票程序的实例来讲解Python的Django框架使用
- 在Ubuntu系统下安装使用Python的GUI工具wxPython
- 使用Python简单的实现树莓派的WEB控制
- PHP和MySql中32位和64位的整形范围是多少
- php实现中文转数字
- php强大的时间转换函数strtotime
- iscroll.js的上拉下拉刷新时无法回弹的解决方法
- Angular发布1.5正式版,专注于向Angular 2的过渡