我有想要使用 extern "C"
声明的 C++ 函数,即使它们只在 C++ 代码中调用。是的,我知道这很奇怪,但为了保持一致性,我想这样做,因为我们混合了 C 和 C++ 声明。我只是想确保将 C++ 函数声明为 extern "C"
不会影响抛出的行为。
看起来像这样:
extern "C" void foo() {throw exception;}
int bar()
{
try
{
foo();
} catch (exception e) { return 1; }
}
最佳答案
“标记为外部“C”的 C++ 函数可以抛出吗?”
是的,无论是语言还是编译器都不会阻止您这样做。
否,从某种意义上说,如果你抛出,这将是一个未定义的行为,因为 C++ 异常跨越了语言边界。
在实践中:不要这样做。捕获异常并将其转换为错误代码,或其他语言可以理解的方式。
所以底线是:不要从标记为 extern "C"
的函数中抛出异常。
关于c++ - 标记为 Extern "C"的 C++ 函数可以抛出吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15845681/