当前位置:   article > 正文

C语言和c++混合编程:c文件如何调用c++函数

C语言和c++混合编程:c文件如何调用c++函数

最近做项目,用到c++和c混合编程,其实想要实现需求很简单,在c文件中,循环调用类对象的方法:

main.c:
#include ontimer.h
int main(void) {

	while1{
	/****
	****在这里需要实现循环调用类对象的一个方法***
	*****/
	}
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

问题在于c不能直接去调用c++的函数,(因为c++继承于c,c++可以去调用c的函数,只需要加上 “extern c”,声明c函数即可)
从网上搜索解决办法:若想去调用c++的成员函数,需要提供一个简单的包装(wrapper)
https://www.cnblogs.com/johnnyflute/p/3535266.html

main.c:
#include ontimer.h
int main(void) {

	while1{
		ontimer();
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
ontimer.h:
ifndef _ONTIMER_H
#define _ONTIMER_H

#ifdef __cplusplus
extern "C" {
#endif

void ontimer(void);

#ifdef __cplusplus
}
#endif
#endif
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
task.h:
class task
{
	void deal_fault(void);//类中实现的一个方法
}
  • 1
  • 2
  • 3
  • 4
  • 5
task.cpp:
#include "task.h"
#include "ontimer.h"
static task ptask;//实例化全局变量

void ontimer()
{
	ptask.deal_fault();
}
void task::deal_fault()
{
	printf("11111111\n");
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/309951
推荐阅读
相关标签
  

闽ICP备14008679号