gpt4 book ai didi

c++ - 为什么没有宏来切割从 std::exception 派生的 bad_weak_ptr

转载 作者:太空宇宙 更新时间:2023-11-04 13:44:37 27 4
gpt4 key购买 nike

我正在将 BOOST 移植到我的 TI 嵌入式平台,在嵌入式环境中不支持异常是很常见的,所以我的 TI 嵌入式平台支持。所以我使用 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 不给出一个宏来切割异常依赖类,以防异常本身已经被切割?

最佳答案

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

从更广泛的意义上讲,我认为您或许应该首先考虑为什么要使用 Boost。 Boost 占用空间更大,并非为小型系统设计。 BOOST_NO_EXCEPTIONS 解决方案与正确的错误传播和处理相去甚远。在我看来,更好的选择是采用 Boost——异常和所有,或者使用其他更合适的东西。

关于c++ - 为什么没有宏来切割从 std::exception 派生的 bad_weak_ptr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26500020/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com