1

我在使用 boost::managed_mapped_file 编译我的应用程序时遇到问题,没有例外。我正在用标志 -DBOOST_NO_EXCEPTIONS -DBOOST_NO_EXCEPTIONS 编译它,但仍然得到

g++ -c -Wall -g -O0 -Wno-write-strings -fno-exceptions -DBOOST_NO_EXCEPTIONS -DBOOST_NO_EXCEPTIONS -I./ -I../Include/   UT_main.cpp -o UT_main.o"

In file included from /usr/include/boost/interprocess/mapped_region.hpp:18
from /usr/include/boost/interprocess/detail/managed_open_or_create_impl.hpp:17
from /usr/include/boost/interprocess/managed_mapped_file.hpp:20
from ../Include/MyMng.h:11
from main.cpp:7:
/usr/include/boost/interprocess/exceptions.hpp: In constructor interprocess_exception
/usr/include/boost/interprocess/exceptions.hpp:40: error: exception handling disabled, use -fexceptions to enable

从我在代码中看到的,只要 -DBOOST_NO_EXCEPTIONS 在 interprocess/exceptions.hpp 上仍然包含但只有“include”不包含。似乎代码应该在没有异常的情况下工作。

如果有人能告诉我我错过了什么谢谢

4

1 回答 1

0

不支持编译该库,无一例外。

许多功能都被明确记录(例如,在使用时在现有文件上create_only)。

抛出是无条件的(IOW 它不使用 Boost Exception 的宏通过用户定义的回调替换异常)。

为了完整性:您在消息中看到的标头无法编译,因为它在try/catch内部使用(以避免在异常处理期间出现异常)。

于 2017-08-24T22:32:13.120 回答