C中如何调用C++函数
对于非成员函数,将 C++ 函数声明为
extern "C"
1
2
3
4
5
6
7
8
9
10
11
12
13
14// C++ code
extern "C" void f(int);
void f(int i)
{
//code
}
// C code
void f(int);
void ff(int i);
{
f(i);
//code
}对于成员函数,需要简单包装
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19// C++ code
class C
{
// code
virtual double f(int);
};
extern "C" double call_C_f(C* p, int i) // wrapper function
{
return p->f(i);
}
// c code
double call_C_f(struct C* p, int i);
void ff(struct C* p, int i)
{
double d = call_C_f(p, i);
// code
}若要调用重载函数,则需要提供不同名字的包装
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15//c++ code
void f(int);
void f(double);
extern "C" void f_i(int i){ f(i) };
extern "C" void f_d(double d){ f(d) };
//c code
void f_i(int);
void f_d(double);
void fff(int i, double d)
{
f_i(i);
f_d(d);
//code
}
计网
网络编程
- cache(缓存): cost/benefit
- cost: 需要缓存的数据会给系统带来的代价
内存管理