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

时间:2010-07-05 02:52:39

标签: c++ c callback legacy

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

这对我来说很难理解。

谢谢,Boda Cydo。

2 个答案:

答案 0 :(得分:9)

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

答案 1 :(得分:1)

是的,您可以从C ++函数中抛出异常。但是,它只能被C ++代码捕获,因此不会在旧库中处理。