根据此页面,很多std :: string函数会在libstdc ++实现中引发异常。我无法更改libstdc ++的实现,而切换到其他库将太昂贵。我当前的目标是使我的代码大量使用std :: string符合SEI CERT C ++编码标准。我的问题是:
谢谢!
C ++编码标准已经禁止您跨执行边界传递非标准布局类型,std::string
这种类型就是这种类型。例外部分不会使问题变得更糟。
通常选择的合理的解决方案是在程序中不要有“执行边界”。相反,您可以使用单个ABI和单个标准库来编译整个程序。
如果您有插件机制,通常会为该插件接口创建一个狭窄的API。在此界面上,您甚至可能坚持使用C ABI,因此插件作者不限于C ++。并且由于这是C ABI,因此请确保您的C ++异常不会被抛出该插件。std::string
与您合作不是这里的问题char const*
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句