boost_1_36_0::boost::shared_ptr<SomeClass> someClass = new SomeClass();boost_1_35_0::boost::regex Expression("[0-9]",boost_1_35_0::boost::regex_constants::basic);解决方法 我读过(很好的扫描)通过 development list discussion.没有简单的解决方案.总结一下:
namespace boost_1_36_0 { #include <boost_1_36_0/boost/regex.hpp>}namespace boost_1_35_0 { #include <boost_1_35_0/boost/shared_ptr.hpp>}
>需要修改源文件
>不允许两个版本都包含在同一个翻译单元中,因为宏不遵守命名空间.
>在包括标题之前定义boost
#define boost boost_1_36_0 #include <boost_1_36_0/boost/regex.hpp>#undef boost#define boost boost_1_35_0 #include <boost_1_35_0/boost/shared_ptr.hpp>#undef boost
>源文件可以使用-Dboost = boost_1_36_0进行编译
>仍然没有解决单个翻译单元中的宏冲突.
>一些内部的头文件包含可能会被弄乱,因为这样的事情确实发生了.
#if defined(SOME_CONDITION)# define header <boost/some/header.hpp>#else# define header <boost/some/other/header.hpp>#endif
但是,解决这些情况可能很容易.
>修改整个升级库以使用命名空间boost_1_36_0 {…}替换命名空间boost {..},然后提供命名空间别名.用BOOST_1_36_0_XYZ宏替换所有BOOST_XYZ宏及其用途.
>如果你愿意付出努力,这可能会有效.
总结以上是内存溢出为你收集整理的c – 如何在独立的命名空间中包装BOOST?全部内容,希望文章能够帮你解决c – 如何在独立的命名空间中包装BOOST?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)