【发布时间】:2010-04-06 19:20:41
【问题描述】:
基于this question,我了解将 C 库与 C++ 代码链接起来的构造目的。现在假设如下:
我有一个用 C++ 编译器编译的“.so”共享库。头文件有一个'typedef stuct'和一些函数声明。如果标头包含 extern "C" 声明...
#ifdef __cplusplus
extern "C"
{
#endif
// typedef struct ...;
// function decls
#ifdef __cplusplus
}
#endif
... 效果如何?具体来说,我想知道该声明是否有任何不利的副作用,因为共享库被编译为 C++,而不是 C。
在这种情况下是否有任何理由使用 extern "C" 声明?
【问题讨论】:
-
你的库是只能从 C++ 调用还是你也需要从 C 调用你的库?
标签: c++ c linux shared-libraries extern