C调用C++接口:
1. 在C++代码中,将函数声明为extern "C",这样C编译器就不会对函数名进行修饰,从而可以正确地调用C函数。
2. 在C代码中,使用C语言的函数指针类型(如void (*)(int, int))来声明C++函数的地址,然后通过这个地址来调用C++函数。
示例代码:
// C++代码
extern "C" {
void my_function(int a, int b);
}
void call_cpp_function() {
my_function(3, 4);
}
// C代码
#include <stdio.h>
extern "C" {
void my_function(int a, int b) {
printf("Called from C++: %d + %d = %d
", a, b, a + b);
}
}
int main() {
call_cpp_function();
return 0;
}
C++调用C接口:
1. 在C++代码中,使用extern关键字声明C函数,并指定函数原型。
2. 在C代码中,定义C函数,并实现它。
3. 在C++代码中,使用C语言的函数指针类型(如int (*)(int, int))来声明C函数的地址,然后通过这个地址来调用C函数。
示例代码:
// C++代码
#include <iostream>
typedef int (*c_function_type)(int, int);
extern "C" {
int add(int a, int b);
}
int call_c_function() {
c_function_type c_add = reinterpret_cast<c_function_type>(add);
return c_add(3, 4);
}
// C代码
#include <stdio.h>
int add(int a, int b) {
return a + b;
}
int main() {
std::cout << "Called from C++: " << call_c_function() << std::endl;
return 0;
}