C API应该包含在可分发的库中吗?

时间:2014-04-20 16:37:45

标签: c++ c

我编写了一个C ++库来进行数值分析。除了C ++ API之外,是否还有一个编程优势包括库的C API接口?

这不是stackoverflow的合适问题我可以删除它。

3 个答案:

答案 0 :(得分:4)

C over C ++:稳定明确的ABI。

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

然而,C是不同的。由gcc编译的C与C编译的clang顺利集成......但它远远超出了。它与C ++,Python,Haskell,Java,Rust,Lua,Perl等顺利集成......大多数(如果不是所有)“严肃”语言都可以或多或少地与C交互。

那么,C API相对于C ++有什么好处?在阳光下几乎可以与任何编程语言轻松集成。

答案 1 :(得分:2)

是的,有一个:如果你想从C代码调用你的函数,你需要一个C API。与C API不同,C API也可以通过C ++代码调用(外部“C”{...}),但对于C ++ API则不然,C ++ API无法调用它。

答案 2 :(得分:0)

包含C API没有编程优势。

猜测这取决于营销以及客户想要的内容。