我的Eclipse中有两个使用相同函数gettimeofday()
的c ++项目。第一个项目编译好,而其他报告错误
error: ‘gettimeofday’ was not declared in this scope
通过在函数名称上设置F3,我发现在第一个项目案例中,我被导航到/usr/include/86_64-linux-gnu/sys/time.h
。第二个项目也有#include <time.h>
,但F3导航到sys/time.h
,它没有'gettimeofday'功能。
为什么同一#include <time.h>
导航到不同的文件夹?
为什么Linux有两个相同的名称包括在内?
为什么两者都包含#include <time.h>
不同?
UPD
我发现/sys/timeb.h
包含#include <time.h>
,导航到/usr/lib/time.h
。我期待/sys/timeb.h
将包括/sys/timeb.h. How Eclipse and GCC decides to go
/ usr / lib / time.h or
/ sys / time.h`?
为什么“专业”/sys/timeb.h
只是通过制作#include <time.h>
而不是定义更精确的路径而在代码中留下歧义?我认为<time.h>
可能同时指向<sys/time.h>
和C
<time.h>
答案 0 :(得分:1)
在Linux上,函数int gettimeofday(struct timeval *tv, struct timezone *tz);
在#include <sys/time.h>
中定义。在代码中使用它时,您应该完全包含它。另一个time.h是包含时间结构和函数的标准C库,例如time_t
和mktime
。当您在C ++程序中使用此文件时,应将其包含在#include <ctime>
中,以便将来避免此类错误。