我有一些用C++编写的函数,尽管它们只在C++代码中调用,但我希望使用extern "C"
来声明它们。是的,我知道这很奇怪,但出于一致性考虑,我们混合了C和C++声明,我想这样做。我只想确保将C++函数声明为extern "C"
不会影响抛出行为。
声明应该类似于以下内容:
extern "C" void foo() {throw exception;}
int bar()
{
try
{
foo();
} catch (exception e) { return 1; }
}
extern "C"
函数?如果您从C++调用它们(而不是从C调用),那么必然会有一个问题:“如果从未从另一种语言调用这些函数,为什么这些函数是extern "C"
?”但我认为,仅从C++使用extern "C"
调用C++函数意味着没有跨越语言边界,因此没有未定义的行为。 - Jonathan Leffler/EHsc
的情况下,情况是不同的。 - Martin Ba