我目前正在学习 C。我知道许多常用函数,如 printf
和 scanf
实际上并不是 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/