您将需要查看extern C构造.
从链接:
// This is C++ code
// Declare f(int,char,float) using extern "C":
extern "C" void f(int i, char c, float x);
...
// Define f(int,char,float) in some C++ module:
void f(int i, char c, float x)
{
...
}
Run Code Online (Sandbox Code Playgroud)
您还可以使用extern C构造声明/定义多个函数,如下所示:
使用声明和多个函数 extern C
extern "C"
{
void func1();
void func2();
}
extern "C"
{
void func1()
{
/// do something
}
void func2()
{
// do something else
}
}
Run Code Online (Sandbox Code Playgroud)
你甚至可以#include用extern "C"这样的方式包装声明:
extern "C"
{
#include "myHeader.h"
}
Run Code Online (Sandbox Code Playgroud)
在虚构的头以上会引起一切myHeader.h有C键,但可能会导致问题的嵌套包括-基本上,不要使用此构造,如果你可以直接修改文件头自己.这是最后的手段.
注意事项
正如Jack Kelly(感谢Jack Kelly!)所提到的,请确保如果您的C++代码涉及异常,那么它们将在您的函数中处理并且不允许传播到C.
使用extern "C"链接定义的函数不能重载,因为C不允许具有相同名称的多个函数.
您的C和C++代码必须使用类似的编译器进行编译,因为它们需要就类型,调用约定等达成一致.
参考文献,因为我无法单独做到这一点
感谢评论者.