如何访问timeval结构的字段

我试图打印struct timevalvariables中的值,如下所示:

 int main() { struct timeval *cur; do_gettimeofday(cur); printf("Here is the time of day: %ld %ld", cur.tv_sec, cur.tv_usec); return 0; } 

我不断收到这个错误:

 请求成员“tv_sec”在某些不是结构或联盟。  
请求成员“tv_usec”的东西不是一个结构或联盟。 

我怎样才能解决这个问题?

因为cur是一个指针。 使用

 struct timeval cur; do_gettimeofday(&cur); 

在Linux中, do_gettimeofday()要求用户预先分配空间。 不要只传递一个指向任何东西的指针! 你可以使用malloc() ,但是最好的办法就是把栈中的东西的地址传给它。

你需要使用 – >运算符而不是那个。 操作员访问字段时。 像这样: cur->tv_sec

你也需要分配timeval结构。 此刻,您正在向函数gettimeofday()传递一个随机指针。

 struct timeval cur; gettimeofday(&cur); printf("%ld.%ld", cur.tv_sec, cur.tv_nsec); 

变量cur是一个类型为timeval的指针 。 您需要有一个timeval 变量 ,并将其地址传递给该函数。 就像是:

 struct timeval cur; do_gettimeofday(&cur); 

你也需要

 #include<linux/time.h> 

它定义了函数do_gettimeofday的struct timeval和声明。

另外,你也可以使用sys/time.hgettimeofday函数。

工作链接

您需要包含sys / time.h而不是time.h,struct timeval在/usr/include/sys/time.h中定义,而不在/usr/include/time.h中定义。