【发布时间】:2011-03-11 18:14:11
【问题描述】:
我有使用一些 C 库的 C++ 代码。 C 库采用 C 语言回调。我在我的 C++ 代码中编写了一个回调,现在我需要报告错误(但它返回 void)。我想知道是否可以从 C++ 代码中使用的 C 回调中抛出异常?
这对我来说很难理解。
谢谢,博达·赛多。
【问题讨论】:
我有使用一些 C 库的 C++ 代码。 C 库采用 C 语言回调。我在我的 C++ 代码中编写了一个回调,现在我需要报告错误(但它返回 void)。我想知道是否可以从 C++ 代码中使用的 C 回调中抛出异常?
这对我来说很难理解。
谢谢,博达·赛多。
【问题讨论】:
是的,您可以从 C++ 函数中抛出异常。但是,它只能被 C++ 代码捕获,因此不会在遗留库中处理。
【讨论】:
是的,您应该可以这样做。但是,请记住,C 库很可能不是为了异常安全而编写的,因此您可能会使该库的某些结构处于某种不一致的状态。它完全取决于特定的库和特定的回调函数。如果不出意外,该库可能必须从一开始就考虑到该回调的 C++ 支持。
【讨论】: