为什么没有宏来削减从std :: exception派生的bad_weak_ptr

时间:2014-10-22 03:48:29

标签: c++ boost

我正在将BOOST移植到我的TI嵌入式平台,通常在emebeded envrionment中不支持异常,因此我的TI嵌入了platoform。因此,我使用BOOST_EXCEPTION_DISABLE和BOOST_NO_EXCEPTIONS在BOOST CONFIG http://www.boost.org/doc/libs/1_56_0/libs/config/doc/html/index.html

的指导下从BOOST中删除异常

但有趣的是,对于bad_weak_ptr,它被声明为从std :: exception派生而没有任何宏:

#if defined(__BORLANDC__) && __BORLANDC__ <= 0x564
# pragma option push -pc
#endif

class bad_weak_ptr: public std::exception
{
public:

    virtual char const * what() const throw()
    {
        return "tr1::bad_weak_ptr";
    }
};

#if defined(__BORLANDC__) && __BORLANDC__ <= 0x564
# pragma option pop
#endif

我想问一下,如何从BOOST中删除bad_weak_ptr?为什么BOOST在异常本身已经被切断的情况下不给宏切割异常依赖类?

1 个答案:

答案 0 :(得分:0)

如果必须的话,有一些肮脏的技巧可以解决这个问题。如果在适当命名的头文件中创建自己的std :: exception类并将其放在包含路径中,则编译器应该选择它。但是要意识到这应该被很好地记录下来,因为它是一个黑客。

从更广泛的意义上讲,我想也许您应该首先考虑为什么要使用Boost。 Boost具有更大的占地面积,并且不适用于小型系统。 BOOST_NO_EXCEPTIONS解决方案与正确的错误传播和处理相去甚远。在我看来,更好的选择是采取Boost - 例外和所有,或使用其他更合适的东西。