在Linux中,unistd.h和sys/types.h之间的区别是什么?

8
当我在The Open Group中搜索头文件unistd.h时,发现它包含标准符号常量和类型,而对于sys/types.h,它则表示数据类型。
然后我发现两者都有uid_t、pid_t和一些类似的类型。
我很困惑他们为什么要这样分开,以及它们之间的区别是什么。我已经谷歌搜索过,但没有得到令人满意的答案。
如果有人能给我详细的解释,我将不胜感激。
谢谢。
1个回答

11

将POSIX和C头文件细分为多个文件的原因可能是出于旧时编译时间长的考虑,增加不必要的头文件会让编译时间变得更长。

如果你只需要操作系统类型来声明函数原型,那么只需要#include <sys/types.h>。但是,如果你需要函数定义,就必须根据需要包含#include <unistd.h>或其他系统头文件。

当然,某些类型在两个头文件中都出现,因为一些函数的声明需要它们。

但是这些相同类型的不同声明是保证相同的,所以如果同时包含两个头文件也没有问题。


嗯......我没有考虑到这一点:在unistd.h中的函数定义会搞乱事情,这将在编译时消耗时间。现在我有一个想法了。谢谢。 - user3511557

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接