关于extern"C"的C++到Java转换问题

Jér*_*nge 5 c c++ java

我必须将一些C/C++代码转换为Java.我的C++非常生疏.

.h文件中,我有以下内容:

#ifdef __cplusplus
extern "C" {
#endif

/* tons of declarations */

#ifdef __cplusplus
} /* extern C */
#endif
Run Code Online (Sandbox Code Playgroud)

有什么用extern "C"?这是什么意思?它告诉编译器相应的代码应该被解释为纯C而不是C++吗?

编辑

谢谢你到目前为止的答案.我必须转换的代码的历史是,它似乎首先用C语言编写,然后其余部分用C++编写.所以我的头文件似乎对应于'旧的'C代码.

我将此代码转换为public final class静态方法和属性.没有压倒一切.

Pab*_*ruz 4

它告诉编译器函数签名应该与C兼容。名称修饰在 C 和 C++ 中是不同的(即 C++ 支持方法重载,而 C 不支持),因此为了使某些函数调用(即某些 DLL 动态调用)与 C 签名兼容,您可以extern C在 C++ 代码中使用。

查看这个 StackOverflow 问题,了解有关该主题的精彩解释