C与C++混合编程

2022-02-11 10:06:04 浏览数 (1)

C 调用C函数

标准模板:

代码语言:javascript复制
//实现不管.c文件还是.cpp都可以调用这里面的函数.
#ifdef __cplusplus
       extern "C" {
#endif
//这里添加代码
#ifdef __cplusplus
       }
#endif

extern "C"是C 的特性,是一种链接约定,通过它可以实现兼容C与C 之间的相互调用,即对调用函数能够达成一致的意见. extern中的函数和变量都是extern类型的:可以在本模块或者其他模块中使用,被extern "C"修饰的 例子

  • cfun.h c 的头文件,只要定义接口中的文件即可
代码语言:javascript复制
//cfun.h

#ifdef __cplusplus  //条件编译,如果是c  前来调用该接口那就有extern c 的标识如果不是就不会有extern c的标识
extern "C"{
#endif 
	void cfun();
#ifdef __cplusplus  //与上同
}
#endif
 
#endif
  • cfun.c 只在接口中定义就可以了
代码语言:javascript复制
//cfun.c
#include "cfun.h"
#include <stdio.h>
 
void cfun()
{
	printf("hello world.n");
}
  • main.cpp实现c 中调用C函数
代码语言:javascript复制
// main.cpp
#include <iostream>
#include "cfun.h"
 
int main()
{
	cfun();
	return 0;
}

C调用C 函数

  • c 头文件
代码语言:javascript复制
//cppfun.h
void cppfun();
  • c 函数
代码语言:javascript复制
//cppfun.cpp
 
#include "cppfun.h"
#include <iostream>
 
void cppfun()
{
	std::cout << "hello world." << std::endl;
}
  • C文件 main函数
代码语言:javascript复制
//main.c
#include <stdio.h>
extern void cppfun();
int main()
{
	cppfun();
	return 0;
}

0 人点赞