c++ - 为什么 C++ 标准库与编译器而不是操作系统捆绑在一起?

标签 c++ c

如果这是一个幼稚的问题,我很抱歉,但有些事情我无法理解。

为什么 C++ 标准库会捆绑不同的编译器实现(g++libstdc++clanglibc++) 而不是与(类 UNIX)操作系统捆绑在一起,就像 C 标准库那样?考虑到它是 C 库的超集,为什么它不与 C 库一起维护?

最佳答案

根本原因是没有标准的 C++ ABI —— 每个编译器都倾向于有自己的 ABI,它与其他编译器不同且不兼容。另一方面,大多数操作系统定义了一个标准 C ABI,他们使用并为其提供标准 C 库,并且该操作系统的所有 C 编译器都支持该 ABI。

关于c++ - 为什么 C++ 标准库与编译器而不是操作系统捆绑在一起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24270624/

相关文章:

c++ - unordered_multimap : values as tuples or vectors

c - Pthreads 和递归

c - 移位运算

c++ - 为什么我应该避免在 C++ 中使用 malloc?

c++ - 字符串的独特性质构建高效的哈希表

c - 执行输出到文本文件

c - 为什么 char 值增加 3?

从函数返回值比较 C 中的宏

c++ - 使用 Wfloat-equal 选项将 float 与 1 或 0 进行比较

c++ - 分离库的主机端和 CUDA 设备端版本