Ubuntu系统

时间:2018-01-10 16:16:49

标签: c++ linux ubuntu gcc

我的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>

1 个答案:

答案 0 :(得分:1)

在Linux上,函数int gettimeofday(struct timeval *tv, struct timezone *tz);#include <sys/time.h>中定义。在代码中使用它时,您应该完全包含它。另一个time.h是包含时间结构和函数的标准C库,例如time_tmktime。当您在C ++程序中使用此文件时,应将其包含在#include <ctime>中,以便将来避免此类错误。