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

相关推荐

  1. 除了ajax还有什么方法获取数据刷新数据

    2024-06-08 10:36:03       50 阅读
  2. C++中的接口有什么

    2024-06-08 10:36:03       58 阅读
  3. C++ inline 关键字有什么

    2024-06-08 10:36:03       58 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-08 10:36:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-08 10:36:03       101 阅读
  3. 在Django里面运行非项目文件

    2024-06-08 10:36:03       82 阅读
  4. Python语言-面向对象

    2024-06-08 10:36:03       91 阅读

热门阅读

  1. SpringEvent事件发布&订阅Demo

    2024-06-08 10:36:03       24 阅读
  2. Dart语言中mixins的使用

    2024-06-08 10:36:03       26 阅读
  3. TS 系列:使用元祖生成联合类型

    2024-06-08 10:36:03       28 阅读
  4. 【无标题】

    2024-06-08 10:36:03       25 阅读
  5. CISSP—实现安全治理和原则的策略

    2024-06-08 10:36:03       24 阅读
  6. 小程序中 使用 UDPSocke通讯的流程

    2024-06-08 10:36:03       30 阅读
  7. Oracle如何定位硬解析高的语句?

    2024-06-08 10:36:03       23 阅读
  8. Unity学习要点

    2024-06-08 10:36:03       30 阅读
  9. kali-vulhub(持续更新)

    2024-06-08 10:36:03       30 阅读
  10. 每日一题36:数据分组之科目种类数量

    2024-06-08 10:36:03       32 阅读