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;
}