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

相关推荐
学嵌入式的小杨同学23 分钟前
STM32 进阶封神之路(二十五):ESP8266 深度解析 —— 从 WiFi 通信原理到 AT 指令开发(底层逻辑 + 实战基础)
c++·vscode·stm32·单片机·嵌入式硬件·mcu·智能硬件
树爷只认钱40 分钟前
ESP01S模块+串口底座 AT指令连接中移Onenet物联网全过程(第1篇)
单片机·嵌入式硬件·物联网·esp8266
学嵌入式的小杨同学1 小时前
STM32 进阶封神之路(二十六):ESP8266 实战全攻略 ——TCP 通信 + 数据上传 + 远程控制 + 透传模式(库函数 + 代码落地)
stm32·单片机·嵌入式硬件·mcu·硬件架构·硬件工程·智能硬件
Nice__J1 小时前
Mcu架构以及原理——7.寄存器编程与抽象
stm32·单片机·架构
嵌入式学习和实践1 小时前
当MCU遇上大模型:在单片机上实现AI对话的硬核玩法
人工智能·单片机·大模型
我不是程序猿儿2 小时前
【嵌入式】适合 STM32 初学者BootLoader 入门学习心得
linux·stm32·单片机·嵌入式硬件·学习
Suifqwu2 小时前
stm32进阶-启动文件
stm32·单片机·嵌入式硬件
火龙果里的芝麻3 小时前
STM32 FreeModbus 移植(最详细)
stm32·单片机·嵌入式硬件
weiyvyy3 小时前
嵌入式硬件接口开发的流程
人工智能·驱动开发·单片机·嵌入式硬件·硬件架构·硬件工程
weiyvyy3 小时前
嵌入式硬件接口开发的核心原则
驱动开发·单片机·嵌入式硬件·fpga开发·硬件架构·硬件工程