C++调用C函数
标准模板:
//实现不管.c文件还是.cpp都可以调用这里面的函数.
#ifdef __cplusplus
extern "C" {
#endif
//这里添加代码
#ifdef __cplusplus
}
#endif
extern "C"是C++ 的特性,是一种链接约定,通过它可以实现兼容C与C++ 之间的相互调用,即对调用函数能够达成一致的意见.
extern中的函数和变量都是extern类型的:可以在本模块或者其他模块中使用,被extern "C"
修饰的
例子
- cfun.h c++ 的头文件,只要定义接口中的文件即可
//cfun.h
#ifdef __cplusplus //条件编译,如果是c++前来调用该接口那就有extern c 的标识如果不是就不会有extern c的标识
extern "C"{
#endif
void cfun();
#ifdef __cplusplus //与上同
}
#endif
#endif
- cfun.c 只在接口中定义就可以了
//cfun.c
#include "cfun.h"
#include <stdio.h>
void cfun()
{
printf("hello world.\n");
}
- main.cpp实现c++ 中调用C函数
// main.cpp
#include <iostream>
#include "cfun.h"
int main()
{
cfun();
return 0;
}
C调用C++函数
- c++头文件
//cppfun.h
void cppfun();
- c++函数
//cppfun.cpp
#include "cppfun.h"
#include <iostream>
void cppfun()
{
std::cout << "hello world." << std::endl;
}
- C文件 main函数
//main.c
#include <stdio.h>
extern void cppfun();
int main()
{
cppfun();
return 0;
}