c - 为什么 C 标准库没有内置到语言中?

标签 c standard-library

我目前正在学习 C。我知道许多常用函数,如 printfscanf 实际上并不是 C 语言的一部分——它们是“函数的标准库”。

我的问题是,为什么这些函数没有内置到语言中?这是哲学/设计考虑吗?编译程序时的效率问题?是否有必要充当“中间层”以确保与不同操作系统的兼容性?完全不同的东西?

最佳答案

它们 C 的一部分。C 实现由编译器和库(以及其他组件,如链接器)组成。

C 核心语言 包含使编写可供其他程序使用的库代码成为可能的工具。该标准的标准库部分指定了一个库,该库可以使用核心语言中定义的设施来实现。

有些语言确实内置了诸如 print 命令之类的东西。 C 编写和调用用 C 编写的库代码的功能非常强大,因此没有必要。

此外,对于“独立”实现(主要用于嵌入式系统),大部分库都是可选。有些实现支持完整的核心语言,但不提供大部分 C 标准库。

并且可以单独提供编译器和库。例如,gcc 是一个编译器;它通常与不同系统上的不同库实现一起使用(Linux 上的 GNU libc,Cygwin 上的“newlib”,Windows 上的 Microsoft 库和 MinGW,等等)。如果将库集成到核心语言中,这样的混合和匹配会困难得多。

C language standard (链接是最新的免费草案)定义了 C。第 6 节定义了核心语言;第 7 节定义了标准库。

关于c - 为什么 C 标准库没有内置到语言中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26346402/

相关文章:

c++ - 如何从键盘输入数学表达式?

collections - Rust 有集合特性吗?

standard-library - put(NULL) - 为什么 WP+RTE 不提示?

c++ - 断言失败/STL 异常

c - union 结构的 parser.y 错误

c++ - 什么是无锁多线程编程?

c - 由于类型转换,二进制值到浮点值的转换不起作用

c - Makefile 不删除中间文件

c++ - 什么是 std::promise?

python - 如何访问Python标准库文件?