在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 恼怒的青蛙