什么时候用C而不用C++?

做接口只用C,千万别要C++。C++是编译器敏感的,一旦导出的接口里有 std::string这些东西,以及类,注定了要为各个编译器的各个版本准备独立的库。

刚好我有一些资料,是我根据网友给的问题精心整理了一份「C++的资料从专业入门到高级教程」,

点个关注在评论区回复"888"之后私信回复"888",全部无偿共享给大家!!!

一般来说,只要接口(如DLL导出的函数)是C的,那在同一个OS下的几乎所有语言都可以调用这个库。因此,很多现代的++软件库++ ,哪怕自己是用了一堆C++甚至++boost开发++的,都要额外的提供C语言的接口。

C++如何变成C的接口?最简单的就是++句柄化++ 。用void *替代对象的指针,而后用C语言封装所有的接口。要使用一个C++对象,就先create handle,内部调用new class,返回void *。而后,把class的所有方法都变成 class_callXXX(handle,...)的形式,把this指针通过handle传进去。当然这些函数可以设置为++友元++,会方便很多。当然用完后再销毁句柄。

至于COM、CORBA之类的抽象OO,都太复杂了。C的接口还是返璞归真。典型的比如 libuhd、 librdkafka等库,都是这样做的。

相关推荐
小吴同学啊1 小时前
基于N32G457QEL7软件开发的基础准备
单片机·n32g457·国名技术单片机
Struggle to dream2 小时前
STM32对于中断的简单理解
stm32·单片机·嵌入式硬件
来自晴朗的明天5 小时前
23、MCU 上电复位(POR)电路
单片机·嵌入式硬件·硬件工程
上海合宙LuatOS6 小时前
LuatOS核心库API——【fft 】 快速傅里叶变换
java·前端·人工智能·单片机·嵌入式硬件·物联网·机器学习
嵌入式科普8 小时前
一、为什么RA6T2是数字电源与伺服的理想MCU
单片机·瑞萨·数字电源·ra6t2
知无不研8 小时前
c++的设计模式(常用)
c++·观察者模式·单例模式·设计模式·简单工厂模式
余生皆假期-12 小时前
无感观测的锁相环 (PLL) 原理与实现方式
单片机·嵌入式硬件
Menida13 小时前
STM32 加强篇 定时器&PWM波应用实验——用无源蜂鸣器播放音乐/放歌
stm32·单片机·嵌入式硬件·定时器·无源蜂鸣器·pwm波
Struggle to dream13 小时前
STM32中断的种类以及使用注意事项
stm32·单片机·嵌入式硬件
_Ningye13 小时前
STM32 — 1-2 — STM32简介
stm32·单片机·嵌入式硬件