修复c++中的宏重定义

Fix macro redefinition in C++

本文关键字:定义 c++ 修复      更新时间:2023-10-16

因为intsafe.hstdint.h都定义了INT8_MIN。因此VS2010生成一个警告:

    1>C:Program Files (x86)Microsoft Visual Studio 10.0VCincludestdint.h(72): warning C4005: 'INT8_MIN' : macro redefinition
1>          C:Program Files (x86)Microsoft SDKsWindowsv7.0Aincludeintsafe.h(144) : see previous definition of 'INT8_MIN'

是否有办法修复VS2010中的警告

显然这是VS2010中的一个bug。一般来说,你可以避免它,但在MFC应用程序中,基本上不可能在任何其他代码中包含stint .h而不击中它。

我只是在有问题的文件的顶部这样做:

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

可以这么说,它让那些头文件"让路",让你继续你的一天。

为了让消息消失,您可以添加

#pragma warning (disable : 4005)

在第一个#include语句之前

但这并不意味着你不应该注意警告。看看您是否可以不使用这两个头文件中的一个,如果不能,请非常确定您的程序使用的是哪个定义。