我可以从旧版C回调中抛出C++异常吗?

bod*_*ydo 9 c c++ legacy callback

我有使用一些C库的C++代码.C库采用C语言回调.我在我的C++代码中编写了一个回调函数,现在我不知何故需要报告错误(但它返回void).我想知道我是否可以从C++代码中使用的C回调中抛出异常?

这对我来说很难理解.

谢谢,Boda Cydo.

Bil*_*eal 9

是的,你应该能够这样做.但是,请记住,C库完全不可能被编写为异常安全,因此您可能会将某些库的结构置于某种不一致的状态.它完全取决于特定的库和特定的回调函数.如果不出意外的话,那个库可能必须从头开始就写回C++支持.

  • 你的前两个陈述是相互矛盾的."是的,你应该能够这样做." - 好的,好的."但是,请记住,完全可能是C库没有被编写为异常安全," - 哦,所以答案实际上是没有.切勿在未知异常安全的代码中抛出异常. (2认同)