修复C ++中的宏重定义

时间:2014-08-08 10:46:01

标签: c++ visual-studio-2010 macros visual-studio-macros

由于intsafe.hstdint.h都定义INT8_MIN。因此,VS2010会生成一条警告:

    1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\stdint.h(72): warning C4005: 'INT8_MIN' : macro redefinition
1>          C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\intsafe.h(144) : see previous definition of 'INT8_MIN'

有没有办法在VS2010中修复该警告。

2 个答案:

答案 0 :(得分:4)

显然这是VS2010中的一个错误。一般情况下可以避免它,但在MFC应用程序中,基本上不可能在任何其他代码中包含stdint.h而不用它。

我刚刚在抱怨的文件顶部做了这个:

#pragma warning (push)
#pragma warning (disable : 4005)
#include <intsafe.h>
#include <stdint.h>
#pragma warning (pop)

它可以让那些标题“脱离”,可以说让你继续一天。

答案 1 :(得分:1)

为了简单地消息消失,您可以添加行

#pragma warning (disable : 4005)
在您的第一个#include声明之前

但这并不意味着你不应该留意警告。看看你是否可以不使用两个头文件中的一个,如果没有,请确定你的程序正在使用哪个定义。