解决VS2010升级SP1后出现的warning C4005问题

发布于 2020-05-05  48 次阅读


一些程序在使用VS2010时编译一切正常,前几天升级了VS2010的SP1,结果发现原先正常的程序报错了,错误信息如下:      

3>c:program files (x86)microsoft visual studio 10.0vcincludestdint.h(76): warning C4005: ‘INT8_MAX’ : macro redefinition

3>          c:program files (x86)microsoft sdkswindowsv7.0aincludeintsafe.h(167) : see previous definition of ‘INT8_MAX’

……

一堆类似以上的错误信息。当然,考虑到代码质量问题,我一向是设置了警告也作为错误处理,所以出现如上警告后,程序编译失败。至少从目前来看,是升级SP1后造成一些宏定义重复定义导致(包含头文件顺序不当造成),解决方式如下:

#ifdef _MSC_VER

#pragma warning (push)

#pragma warning (disable : 4005)

#include <intsafe.h>

#include <stdint.h>

#pragma warning (pop)

#pragma warning (default : 4005)

#endif

将以上代码放在代码统一访问的头文件中即可


一沙一世界,一花一天堂。君掌盛无边,刹那成永恒。