79

据说在C++中包含C头文件时,要去掉“.h”后缀,然后在开头加上“c”。例如,#include <cstdio> 代替#include <stdio.h>. 但是当我sleep()在我的代码中使用时,#include <cunistd>它不起作用,但#include <unistd.h>有效。为什么不<cunistd>呢?

4

4 回答 4

81

您的算法对于大多数(全部?)标准 C 头文件都是正确的,但unistd.h不是标准 C 的一部分,因此标准 C++ 反过来不将它包含在其他c...头文件中。

于 2013-03-11T05:11:38.327 回答
37

因为unistd.h从来都不是 C 语言的一部分。它是操作系统的一部分。

于 2013-03-11T05:12:38.670 回答
21

<unistd.h>, 代表 unix 标准头文件,名字说明了一切。

于 2013-03-11T05:13:47.740 回答
6

unistd.h 不是标准 C 的一部分。标准 C++ 库不包含它与其他 c 头文件。

于 2013-05-27T08:51:39.620 回答