【发布时间】:2014-12-08 09:30:58
【问题描述】:
我目前正在学习 C。我了解许多常用函数,例如 printf 和 scanf 实际上并不是 C 语言的一部分——它们是函数“标准库”的一部分。
我的问题是,为什么语言中没有内置这样的功能?这是哲学/设计考虑吗?编译程序时的效率问题?有必要充当“中间层”以确保与不同操作系统的兼容性吗?完全不同的东西?
【问题讨论】:
-
怀疑这是否有真正的答案,因为这只是猜测和/或意见。说唯一“真正的答案”可以是“因为”,因为他们想那样做,所以他们做到了。它是明智的还是不明智的?其他语言这样做是明智还是不明智?
-
printf和scanf是 C 的一部分。有“C 语言”和“C 标准库”。如果这对您更有意义,它们都是“C 标准”的一部分。 -
我认为您需要澄清这个问题。从某些方面来说,它们是语言“内置”的(例如 printf 出现在 C 标准中,而 C 库本身没有单独的文档)。您是否在问为什么该标准使用它所使用的术语?为什么编译器通常不将这些函数实现为内置函数?
-
C 有独立的实现,不需要提供任何
<stdio.h>函数。 C 标准也解决了这些问题,因此必须提供“核心语言”和库托管实现。 -
@dyp K&R C,第 2 版,第 151 页:“输入和输出设施不是 C 语言本身的一部分……在本章中,我们将描述标准库,它是一组为 C 程序提供输入和输出、字符串处理、存储管理、数学例程和各种其他服务的函数。”
标签: c standard-library