应将C API包含在可分发库中吗
Should a C API be included in a distributable library?
我写了一个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没有编程优势。
我想这取决于市场营销和你的客户想要什么。
相关文章:
- 如何导出包含具有"std::unique_ptr"值的"std::map"属性的
- 用于访问容器<T>数据成员的正确 API
- 从包含m行的文件中提取n行,必要时(惰性地)重复该文件
- 编译包含字符串的代码时遇到问题
- c++库的公共头文件中应该包含什么
- 将包含C样式数组的对象初始化为成员变量(C++)
- 如何使用Luacneneneba API正确读取字符串和表参数
- 是否需要删除包含对象的"pair"?
- C++MySQL C api用户输入行
- Asio如何包含基于BSD套接字API的低级套接字接口
- 编译包含LLVM API标头的C++文件时出错
- Python API用于解析包含数组格式的protobuf数据的二进制文件
- 运行C 程序,其中包含Fedora中的POSIX API
- 如何安全地将包含的对象(菜单项)与需要容器(菜单)的API同步
- 彭博数据 API 如何包含库 c++
- 如何隐藏另一个包含的静态库的API
- 如何向包含多部分 HTTP POST 的 SendGrid Web API 发出请求
- 如何在VC++中包含CreateProcess API的参数
- 我在哪里可以找到API文档包含头类和方法在mfcvc++
- 应将C API包含在可分发库中吗