C++调⽤C函数
为了防⽌⽆良⽹站的爬⾍抓取⽂章,特此标识,转载请注明⽂章出处。LaplaceDemon/ShiJiaqi。
有⼀个程序,代码⽬录如下:
.
|-- calc
| |-- calc.c
| `-- calc.h
`-- main.cpp
假如main.cpp需要调⽤calc.h中的函数(calc.c是c代码)
传统C编程中需要#include "calc/calc.h"后,声明函数,然后调⽤。
但是由于main.cpp是个C++代码。以C⽅式的调⽤,g++编译器⽆法通过编译。
解决⽅案⼀:
若calc中代码量很⼩,或代码是⾃⼰写的可以直接利⽤c++兼容c的特性,把calc.c改成calc.cpp。即可编译。
解决⽅案⼆:
在calc.h中的每个函数最前⾯添加:extern "C"c编程网站
⽐较简单的⽅案是:
extern"C" {
void fun1(int arg1);
void fun2(int arg1, int arg2);
void fun3(int arg1, int arg2, int arg3);
}
若不确定当前编译环境是C还是C++,可以这样:
#ifdef __cplusplus
extern"C" {
#endif
void fun1(int arg1);
void fun2(int arg1, int arg2);
void fun3(int arg1, int arg2, int arg3);
#ifdef __cplusplus
}
#endif
解决⽅法三:
若别⼈已经写好的头⽂件,我们⽆法修改,怎么办?重写⼀个专门被c++⽤的头⽂件即可。
例:编写头⽂件 cpp_calc.h
extern"C" {
#include "calc.h";
}