应将C API包含在可分发库中吗

Should a C API be included in a distributable library?

本文关键字:API 包含 应将      更新时间:2023-10-16

我写了一个C++库来做一些数值分析。除了C++API之外,在库中包含一个C API接口是否具有编程优势?

这对stackoverflow来说不是一个合适的问题吗?我可以删除它。

什么是C++之上的C:一个稳定的、定义良好的ABI。

存在多个C++ABI(MSVC和安腾是最重要的),并且每个标准库实现(例如Dirkumware、libstd++或libc++)都与其他实现不兼容。因此,C++代码与C++代码正确链接的唯一方法是使用相同的编译器(或使用共享相同ABI的编译器)进行编译,并且高于相同的标准库实现。

C、 但是不同。gcc编译的C与C编译的clang顺利集成。。。但它远远超出了范围。它与C++、Python、Haskell、Java、Rust、Lua、Perl、。。。大多数(如果不是所有的话)"严肃"语言都可以或多或少地与C进行流畅的交互。

那么,与C++相比,C API有什么好处呢?与几乎任何编程语言的平滑集成。

是的,有一个:如果您想从C代码调用函数,您需要一个C API。与C API不同,它也可以由您的C++代码调用(extern"C"{…}),这对于C代码不能调用的C++API来说不是真的。

不包含C API没有编程优势。

我想这取决于市场营销和你的客户想要什么。