How to mix C and C++
前言
C C++混合编程翻译整理。
一、Need to know
- main()必须用C++编译器编译 同样,static initialization常量来对静态变量进行初始化
- C++编译器应该direct(v.)引导linking process链接过程
- C和C++的编译器probably可能需要来自一样的vendor厂商和兼容的版本
二、Call a C function from C++
在C++代码中,只要声明external "extern “C” ,然后就可以在C和C++代码中调用。
声明
// C++ code
extern "C" void f(int); // one way
extern "C" { // another way
int g(double);
double h();
};
void code(int i, double d)
{
f(i);
int ii = g(d);
double dd = h();
// ...
}
定义
/* C code: */
void f(int i)
{
/* ... */
}
int g(double d)
{
/* ... */
}
double h()
{
/* ... */
}
注意
函数重载是C++数据类型规则,不是C的规则。
所以不能用错误数量的参数调用extern “C” 中声明的函数。