Ear*_*rlz 6 c++ compiler-construction exception armcc
我正在使用托管的mbed C++编译器将C++库移植到我的mbed,该编译器基本上是ARMCC,其配置无法真正改变.他们决定的配置选项之一(出于某种未知原因)是不支持异常.所以a throw和a catch会产生编译器错误.
如何在没有例外的情况下使用标准C++库?我在我的库中使用了一些向量.我怎么知道这个push_back功能是否真的成功了?有没有任何标准的方法来了解是否发生了异常,或者它只是做了exit(1)什么?
他们解释了为什么这里不支持它:
传统观点(以及armcc编译器人员的建议)是异常的开销相当高,因此不适合此类领域。因此,目前我们不支持异常(很难删除支持,但添加支持很容易)。
我们肯定会在某个时候真正了解空间和时间开销(mbed 并不是很传统,所以也许异常是完美的!),但现在您必须坚持使用更传统的异常处理方法。
和这里:
我们不支持编译器中的异常处理,也不打算添加它。但我很高兴听到您通常如何在微控制器应用中使用它们,或者您的经验!但现在,您将不得不转向更标准的 C 解决方案。
基于此,我可以猜测特殊情况最终会出现在std::terminate().
我不认为根据语言标准,在 C++ 中不支持异常是合法的选择。因此,您应该做一个实验来看看失败时会发生什么new,push_back()或者询问编译器背后的人。
| 归档时间: |
|
| 查看次数: |
2563 次 |
| 最近记录: |