修复 C++ 中的宏重定义

Moe*_*bai 5 c++ macros visual-studio-2010 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'
Run Code Online (Sandbox Code Playgroud)

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

小智 9

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

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

#pragma warning (push)
#pragma warning (disable : 4005)
#include <intsafe.h>
#include <stdint.h>
#pragma warning (pop)
Run Code Online (Sandbox Code Playgroud)

可以这么说,它让那些标题“不碍事”,让你继续你的一天。


Log*_*rat 2

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

#pragma warning (disable : 4005)
Run Code Online (Sandbox Code Playgroud)

在你的第一个#include陈述之前

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