我有一個嵌入式系統,並希望在這個系統中使用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