使用不支持异常的C++编译器?

Ear*_*rlz 6 c++ compiler-construction exception armcc

我正在使用托管的mbed C++编译器将C++库移植到我的mbed,该编译器基本上是ARMCC,其配置无法真正改变.他们决定的配置选项之一(出于某种未知原因)是不支持异常.所以a throw和a catch会产生编译器错误.

如何在没有例外的情况下使用标准C++库?我在我的库中使用了一些向量.我怎么知道这个push_back功能是否真的成功了?有没有任何标准的方法来了解是否发生了异常,或者它只是做了exit(1)什么?

Ale*_*nze 2

他们解释了为什么这里不支持它:

传统观点(以及armcc编译器人员的建议)是异常的开销相当高,因此不适合此类领域。因此,目前我们不支持异常(很难删除支持,但添加支持很容易)。

我们肯定会在某个时候真正了解空间和时间开销(mbed 并不是很传统,所以也许异常是完美的!),但现在您必须坚持使用更传统的异常处理方法。

这里

我们不支持编译器中的异常处理,也不打算添加它。但我很高兴听到您通常如何在微控制器应用中使用它们,或者您的经验!但现在,您将不得不转向更标准的 C 解决方案。

基于,我可以猜测特殊情况最终会出现在std::terminate().

我不认为根据语言标准,在 C++ 中不支持异常是合法的选择。因此,您应该做一个实验来看看失败时会发生什么newpush_back()或者询问编译器背后的人。