首页 > 解决方案 > 是 stdio.ha 库吗?

问题描述

C 编程语言调用stdio.h库。但是,有人告诉我它是一个仅用于编译器的头文件,这是真的,因此它不是一个库。

Internet 上的其他编程站点将其称为库。现在图书馆的定义不一样了吗?

一些 C 程序开始是#include <stdio.h>因为 C 语言不包含文件操作函数。

引用 Brian Kernighan 和 Dennis Ritchie 的 C 编程语言,第二版,第 3 页(简介)的引用更新:

标准的第二个重要贡献[参考“ANSI 标准,或“ANSI C”,于 1988 年完成] 是伴随 C 库的定义。它指定了访问操作系统的函数(例如读取和写入文件)、格式化的输入和输出、内存分配、字符串操作等等。......使用这个库与主机系统交互的程序保证了兼容的行为。大多数库都非常接近于“标准 I /O 库”的 UNIX 系统。该库在第一版中描述...

图书馆的定义已经演变/改变/更新似乎是一个合乎逻辑的结论......

标签: clibraries

解决方案


不,stdio.h不是库,而是头文件。接近 C 时的一个常见错误是将每个头文件都称为库,这是错误的。

C 标准库是函数的集合,这些函数在头文件中声明,并且stdio.h是其中之一。该名称代表“标准输入输出”,因此在该文件中您可以找到处理输入、输出和文件的所有函数声明。您可以在此处找到 C 标准库中包含的头文件列表。

库是编译后的二进制文件(或通常是二进制文件的集合),在编译程序时可以链接它以利用库提供的功能(即导出)。然后使用头文件来识别这些函数的名称和签名,以便编译器知道如何调用它们。

通常,对于小型库,一个头文件就足够了,因此初学者很容易将头文件与库本身混淆。然而,C 标准库非常复杂并且有很多函数,因此它们在不同的头文件中声明。

C 程序开始是#include <stdio.h>因为 C 语言不包括文件操作函数。

是的,这是正确的。C 规范仅涉及语言本身(语法、类型等),并没有定义任何“标准”函数。


推荐阅读