我有一个嵌入式系统,并希望在这个系统中使用boost,但需要禁用异常,因为我不想支付异常的代价。为什么boost :: shared_ptr无法编译,如果BOOST_NO_EXCEPTIONS定义在user.hpp
升压给一个user.hpp和可设置的微距拍摄选项BOOST_NO_EXCEPTIONS和BOOST_NO_EXCEPTION_STD_NAMESPACE,但的boost :: shared_ptr的不能编译(更准确地说,无法链接),如果这两个宏定义。
shared_ptr_boost.cpp:(.text._ZN5boost6detail12shared_countC2IiEEPT_[_ZN5boost6detail12shared_countC5IiEEPT_]+0x7a): undefined reference to `boost::throw_exception(std::exception const&)'
collect2: error: ld returned 1 exit status
为什么boost会给宏选项,但不承诺用这些选项编译?
如果由用户定义,在BOOST_NO_EXCEPTIONS被定义的情况下,这个函数是否有意义?谁会叫它? –
如果库需要失败,库会调用它。在未处理的特殊情况下......我猜是否合理取决于你留下的未处理错误以及如何实现它。 – sehe