c与c++互相调用

本文参考了C中如何调用C++函数
C和C++之间库的互相调用
如有侵权,请告知,谢谢。

这几天在写qt的东西,我作为一个终端设备要通过uart与下面单片机进行交互,关于通信协议已经写完(c写的),给他们单片机移植的话的确是挺方便的,但是qt用的是c++。于是调用起来就是

C++ -> C -> C++

略略有些麻烦

分两部分来说说吧

C++调用C
这个相对来说会简单一些,主要思路就是保证编译出来的函数符号能够被链接到。
同样的函数在放在c++跟c中编译出来的结果是不一样的。

为了保持一致性就需要加入

extern "C"
{
    //代码
}

为了C++ C通用,可以这么写

#ifdef __cplusplus
extern "C"
{
#endif

//代码

#ifdef __cplusplus
}
#endif

其中__cplusplus在c++编译的时候就可以调用到extern “C”,c编译的时候就跟正常的c编译一样。

C调用c++

主要思路还是差不多,要保证连接符号相同。

隔了好久好久再来写,然而这几天过得并不开心。。
真是大姨夫来了

C调用静态函数的话 在另外一篇里面已经有啦。
c调用对象的时候,

h:
class a
{
    publicstatic int * addr;
    void test();
}

void yoyoyo();


cpp:
void a::test()
{
    cout << "hello" <<endl;
}

void yoyoyo()
{
    a* tmp = (a*)a::addr
    tmp->test();
}


a * b = new a();
a::addr = (int *)b;
yoyoyo();

哈哈哈啊哈哈 隔了好久写的 希望没写错
有什么不对的 不要打我哈 差不多意思就这样啦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值