什么时候用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等库,都是这样做的。

相关推荐
TangDuoduo00052 小时前
【STM32 GPIO控制器原理】
stm32·单片机·嵌入式硬件
@good_good_study3 小时前
STM32 直流有刷电机控制(野火电机控制学习笔记)
stm32·单片机
逐步前行7 小时前
C51_矩阵按键
51单片机
捷米研发三部9 小时前
工业无线数传模块:实现汽车零部件厂房 PLC 与触摸屏 300 米无线通讯
单片机·汽车
电子工程师-C519 小时前
基于51单片机的鱼缸环境检测及控制系统
单片机·嵌入式硬件·51单片机
llhm11 小时前
iar中报错:Error[Li005]: no definition for “__aeabi_uldivmod“
单片机
QQ154018285611 小时前
PTCB818A规格书|PL27A1配套MCU|集成了BLE通信模块IC设计资料
单片机·ptcb818a·pl27a1配套mcu·ptcb818a资料
某林21211 小时前
SLAM 建图系统配置与启动架构
人工智能·stm32·单片机·嵌入式硬件·算法
p666666666812 小时前
STM32跑飞,进入HardFault_Handler如何精准的确定问题
stm32·单片机·嵌入式硬件
三佛科技-1341638421213 小时前
BP85928D贴片SOP8 5V500MA智能家居开关电源芯片 (典型应用电路、替代方案FT8451B/FT8451H)
单片机·嵌入式硬件·物联网·智能家居·pcb工艺