我试图打印struct timeval
variables中的值,如下所示:
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.h
的gettimeofday
函数。
工作链接
您需要包含sys / time.h而不是time.h,struct timeval在/usr/include/sys/time.h中定义,而不在/usr/include/time.h中定义。