在VS中利用Boost库呈现Macro redefinition错误如何办理
当前位置:以往代写 > C/C++ 教程 >在VS中利用Boost库呈现Macro redefinition错误如何办理
2019-06-13

在VS中利用Boost库呈现Macro redefinition错误如何办理

在VS中利用Boost库呈现Macro redefinition错误如何办理

最近利用Boost库做多线程开拓,可视在vs中编译工程师老是碰着Macro redefinition错误,雷同下面的错误描写

1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\stdint.h(116): warning C4005: ‘INT8_C’ : macro redefinition

1>         c:\vc\include\boost\cstdint.hpp(376) : see previous definition of ‘INT8_C’

一开始没有管,可视厥后这对象实在是拖慢编译速度,于是不能忍,坚决google之,发明boost官方已经有人提交了该bug并且状态是已经修复,参考下面的链接

Ticket #4182

下面回覆说是需要在config文件中界说“BOOST_HAS_STDINT_H”这个宏就能办理问题,但是我尝试了半天没有任何结果,然后看修复Changeset 62082,发明修改的是下面这个文件

boost/config/compiler/visualc.hpp

然后我查抄本身利用的这个文件,发明已经是修复过的,但是为什么尚有错误呢,于是我实验注释掉

#  define BOOST_HAS_STDINT_H

然后从头编译,发明问题公然办理了,

所以最后办理要领是:

修改vc编译器设置文件“boost/config/compiler/visualc.hpp”,注释掉“BOOST_HAS_STDINT_H”宏界说,可以办理问题

#if _MSC_VER >= 1600
//#  define BOOST_HAS_STDINT_H
#endif

可能也可以把这几行完全注释掉

这样修改的道理猜测:应该是微软的vc编译器的相关文件也同样处理惩罚过该问题,导致两边同时修改宏界说,进而导致相当于宏界说依然没有修改,文件反复包括。

作者:cnblogs 恼怒的青蛙

    关键字:

在线提交作业