我被告知不要在c ++程序中包含像<stdio.h>
这样的C标题,而是要使用<cstdio>
等。如何在不包含struct timeval
的情况下获取<sys/time.h>
?
备选问题,是否有任何C ++ 11替代使用select / poll(在POSIX系统上)?
答案 0 :(得分:9)
<cstdio>
和类似的C标准库的C ++变体。 <sys/time.h>
根本不是C标准库的一部分(它是certan OS的POSIX接口的一部分),因此不存在特定于C ++的sys/ctime
,所以不,你只需要使用与C中相同的头文件。
拥有C样式和C ++样式头的主要原因是将extern "C"
应用于头文件中声明的函数。在某些系统中,可能需要像这样包装函数:
extern "C" {
#include <sys/time.h>
}
但在我的Linux系统中,它在标准<sys/time.h>
文件中执行此操作。
答案 1 :(得分:0)
<cstdio>
是C库<stdio.h>
的C ++变体。不同之处在于C版本是在全局命名空间中定义的。
您可以在此处查看这些标头的列表:http://www.cplusplus.com/reference/clibrary/
<sys/time.h>
不是标准库的一部分,所以在C ++中没有等价物。你只需要在C中使用它。