我被告知不要在C++程序中包含像C++頭文件<stdio.h>
,而是使用<cstdio>
等。如何獲得struct timeval
而不包括<sys/time.h>
?C++ 11:struct timeval
替代的問題,是否有任何C++ 11替代使用select/poll(在POSIX系統上)?
我被告知不要在C++程序中包含像C++頭文件<stdio.h>
,而是使用<cstdio>
等。如何獲得struct timeval
而不包括<sys/time.h>
?C++ 11:struct timeval
替代的問題,是否有任何C++ 11替代使用select/poll(在POSIX系統上)?
<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>
文件。
如果你在一個'extern「C」{/*...*/}'鏈接規範中包含POSIX頭文件? – dyp
@DyP:看起來我的機器上的Linux版本有一個'__BEGIN_DECLS',它被設置爲'extern「C」{'(和一個'__END_DECLS'以匹配另一端。 –
@DyP:Doh!有些日子我想知道我是如何輸入任何東西的......;) –
<cstdio>
是C庫<stdio.h>
的C++變體。區別在於C版本是在全局命名空間中定義的。
您可以在這裏看到這些標題的列表:http://www.cplusplus.com/reference/clibrary/
<sys/time.h>
不是標準庫的一部分,所以在C中沒有等同++。你只需要像使用C一樣使用它。
我建議你在C++中使用'' –
sehe
你問'struct timeval'還是關於'select' /'poll'?這些是完全不同的問題。 – Nemo
@DyP:我假設他正在談論'',它提供'std :: time(std :: time_t *)',借用標準C. –
Nemo