C和C++函数互相调用
Call C++ function from C & Call C function from C++ (C和C++函数互相调用)
By williamxue on Jun 12, 2007
- C++中调用C函数
这个比较容易,使用关键字extern就可以,有以下两种格式:
extern "language_name" declaration ;extern "language_name" { declaration ; declaration ; ... }例如:
int C_Coding(int a, float b);
做法是,
/\* cpp_a.h \*/
extern "C" {
#include "a.h"
}
或
/\* cpp_a.h \*/
extern "C" {
int C_Coding(int a, float b); /\* 重定义所有的C函数 \*/
}
这样在C++程序中就可以调用C函数C_Coding了。
- C中调用C++函数
调用一个类的public函数,
extern "C" int call_M_foo(M\* m, int i) { return m->foo(i); }分解开来主要以下几步:
1. C++头文件中,声明有public函数的C++类
2. C++文件中,实现一个有public函数的C++类
3. 进行二次封装:在另一个C++文件中实现一个C函数接口,在这个 C函数中,对类的public函数进行调用。
4. 将这个接口函数用extern导出,使得其他C函数可以调用该函数。