当前位置:  开发笔记 > 编程语言 > 正文

如何将BOOST包装在单独的命名空间中?

如何解决《如何将BOOST包装在单独的命名空间中?》经验,为你挑选了1个好方法。



1> Eclipse..:

我通过开发列表讨论阅读(扫描得很好).没有简单的解决方案.总结一下:

    在头文件声明中包装头文件

    namespace boost_1_36_0 {
        #include 
    }
    namespace boost_1_35_0 {
        #include 
    }
    

    需要修改源文件

    由于宏不遵循名称空间,因此不允许将两个版本包含在同一个转换单元中.

    在包含标题之前定义提升

    #define boost boost_1_36_0
        #include 
    #undef boost
    #define boost boost_1_35_0
        #include 
    #undef boost
    

    源文件可以简单地编译 -Dboost=boost_1_36_0

    仍然没有解决单个翻译单元中的宏冲突.

    一些内部头文件包含可能会混乱,因为这种事情确实发生了.

    #if defined(SOME_CONDITION)
    #  define HEADER 
    #else
    #  define HEADER 
    #endif
    

    但是解决这些问题可能很容易.

    修改整个boost库以替换namespace boost {..},namespace boost_1_36_0 {...}然后提供命名空间别名.替换所有BOOST_XYZ宏及其用途BOOST_1_36_0_XYZ.

    如果你愿意付出努力,这可能会奏效.

推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有