各种头文件及其用途

时间:2011-06-29 07:28:14

标签: c header-files

我正在寻找一些信息。 我在包含文件的许多程序中看到了

#include <sys/types.h>
#include <sys/socket.h>
#include <sys/un.h>
#include <unistd.h>

我想知道更多上述头文件的用途,即使用哪个头文件的条件。 任何明确提到哪个头文件服务的链接都会很好。

3 个答案:

答案 0 :(得分:3)

sys/types.h:“数据类型”

sys/socket.h:“主套接字标题”

sys/un.h:“UNIX域套接字的定义”

unistd.h:“标准符号常量和类型”

答案 1 :(得分:2)

头文件用于声明某些现有库中定义的项目。

如果您想使用socket(),则需要加入sys/types.hsys/socket.h。如果您想使用atan(),则需要添加math.h。如果您想使用printf(),则需要添加stdio.h

知道函数需要哪个头文件的文档(Unix / Linux上的man printf)。

了解哪个函数可用于解决问题由经验,stackoverflow和Google提供。

答案 2 :(得分:0)

如果你想知道头文件中有什么内容,请认真看一下:大多数情况下会先从描述内容的一些评论开始,如果它不是很明显的话。

如果您想知道程序包含的头文件的哪个部分正在使用,请尝试删除它并查看错误消息。这也可能听起来很滑稽,但遗憾的是,通常没有更好的方法来解决这个问题。但是,可能是在一个平台上某些功能需要包括两个标头,而在某些其他平台上只需要其中一个(可能是因为第二个标题是由一些早期的包括间接拾取):如果你在平台上测试如果需要一个标头并决定删除第二个包含,则可能会破坏另一个平台上的构建。因此,当您找到所需的内容时,请查阅手册页以获取所需的标题 - 它们可能由某些标准指定,两个平台都可以使用。

如果您想知道自己使用哪些头文件,那么再次 - 您必须查看需要调用的函数的文档。即便如此,作为C ++程序员,您应该更喜欢某些C头的C ++版本,而man等标准文档工具 - 给定C函数名称 - 不会告诉您C ++头文件。阅读例如http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt01ch03s02.html - 它是GCC文档,但描述了这些标头的C ++标准要求。