VS2015--win32工程配置的一些想法之GdiplusTypes.h(470) : error C3861: 'min': identifier not found

一次一次地,乐此不疲的掉入自己挖的坑儿。

之前博客《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:

#ifndef min
#define min
#endif

#include <GdiPlus.h>

上面这么做的前提是你为了解决algorithm中std::min和windows中min的冲突,或是预处理了:NOMINMAX,或是这样:

#undef min

VS2015--win32工程配置的一些想法之GdiplusTypes.h(470) : error C3861: 'min': identifier not found

时间: 2024-10-01 21:47:47

VS2015--win32工程配置的一些想法之GdiplusTypes.h(470) : error C3861: 'min': identifier not found的相关文章

VS2015--win32工程配置的一些想法之在 Visual Studio 2015 中进行调试的同时分析性能

出处: https://msdn.microsoft.com/zh-cn/magazine/dn973013(en-us).aspx 许多开发商花了绝大多数时间获取应用程序才能正常发挥作用.更少的时间里专注于应用程序的性能.虽然有了很长一段时间分析工具在 Visual Studio 中的,他们是单独的一组学习工具.许多开发人员没有花时间去学习和使用它们的时候会出现性能问题. 这篇文章将介绍 Visual Studio 2015 年新的诊断工具调试器窗口. 它还将描述如何使用它来分析性能作为定期调

VS2015--win32工程配置的一些想法之算法min/max与windows中的 min/max宏冲突

今天还是配置一个工程,遇到了这个问题,使用min时提示:输入正确的标识符. 看下面的代码: #include<iostream> #include<Windows.h> #include<algorithm> int main() { auto it = std::min(1, 2);//错误,应输入标识符 return 0; } 如果把windows的头文件注释掉就不会发生错误. 问题的原因就是algorithm中的std::min与windows中min的宏定义产生

VS2015--win32工程配置的一些想法之Google Code Style中头文件的顺序

工程大了,有很多的头文件,也要引用很多的库文件. 从我们学习C++写hello world的那一刻起,就知道要包含一些系统文件. 那么顺序如何呢? 在review的时候,感觉自己写的东西就是一坨屎. 看看Google code style中是如何描述include文件顺序的: Names and Order of Includes Use standard order for readability and to avoid hidden dependencies: C library, C++

quick cocos2dx 3.x 配置win32工程

公司项目主体部分用c++,而ui部分用lua写,所以选择了用quick框架.项目先开发了ios/mac版,这两天试着配置其win32工程,遇到一些问题,记录一下(纯c++版本cocos2dx配置方法应该也是类似的). 先配debug模式: 把c++文件都添到工程中去,并在附加包含目录下配置c++文件的搜索路径.然后编译会遇到一些问题: 一,win32下fullPathForFilename函数与ios/mac下行为不一致的问题. fullPathForFilename当传入的参数是文件夹路径时,

踏入OpenGL大门 —— VS2015开发环境配置 (详细图文)

转自: https://www.jianshu.com/p/68c314fa9fea?from=groupmessage 眼睛熊 ---------------- 本文 --------------- 注意:笔者是以 Win10 + VS2015 为例 内容:安装CMake.配置freeglut .配置glew 版本:Window10.VS2015.CMake 3.8.0-rc-1.freeglut 3.0.0.glew 2.0.0 目标:使初学者不再为配置OpenGL相关环境苦恼 预热 需要说

[转帖]Cocos2d-x 3.0rc0 的Win32工程添加CocoStudio库

转自 http://www.cocoachina.com/bbs/read.php?tid=194668 前天, 在CocoaChina 2014春季大会上, 激动人心的Cocos2d-x 3.0和CocoStudio 1.3发布了. Cocos2d-x 3.0做出令人兴奋的性能, 易用性等一系列改进, CocoStudio 1.3带来了稳定性和新特性. 今天让我们看下如何在新建Cocos 3.0rc0的Win32的工程中添加CocoStudio的支持.  一 软件及其下载  1. Cocos2

使用vs2013打开VS2015的工程文件的解决方案(适用于大多数vs低版本打开高版本)

前言:重装系统前我使用的是vs2015(有点装*),由于使用2015实在在班上太另类了, 导致我想在其他同学的vs下看一看我写的代码都无法达成! 而且最关键的是交作业的时候,老师的2013也没有办法打开这个版本! 所以在重装过后,我就安装的2013了,但是要使用以前我的项目就只有更改配置,所以在此记录下怎样使用vs2013打开VS2015的工程文件,希望对大家有所帮助! 图文说明: 首先使用记事本或者notepad++打开你的项目的sln文件 按照如图所示做出更改 在工程文件中找到后缀名为.vc

转:使用vs2013打开VS2015的工程文件的解决方案(适用于大多数vs低版本打开高版本)

http://www.cnblogs.com/WayneLiu/p/5060277.html 前言:重装系统前我使用的是vs2015(有点装*),由于使用2015实在在班上太另类了, 导致我想在其他同学的vs下看一看我写的代码都无法达成! 而且最关键的是交作业的时候,老师的2013也没有办法打开这个版本! 所以在重装过后,我就安装的2013了,但是要使用以前我的项目就只有更改配置,所以在此记录下怎样使用vs2013打开VS2015的工程文件,希望对大家有所帮助! 图文说明: 首先使用记事本或者n

SDL2.0.4+VS2015+win10 环境配置

SDL2.0.4+VS2015+win10 环境配置 第一个是源码 第二个就是配置windows 所需要的东西 将这两个下载下来,分别解压出来,放到你想放的目录,如下图,我这里放到了Program File文件夹中 我们可以看看里面的东西 配置vs2015所需要的东西我主要有个 一:include文件夹 二:lib文件夹 有了想要的东西下面就可以开始配置vs2015了 1.新建一个工程,工程名随便叫 这里就不截图了,配置请看图 这里就是指定include的目录 这里就是指定lib的目录 在依赖库