我正在尝试在struct timeval
变量中打印值,如下所示:
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;
}
我一直收到这个错误:
request for member 'tv_sec' in something not a structure or union. request for member 'tv_usec' in something not a structure or union.
我该如何解决这个问题?
答案 0 :(得分:7)
因为cur
是一个指针。使用
struct timeval cur;
do_gettimeofday(&cur);
在Linux中,do_gettimeofday()
要求用户预先分配空间。不要只是传递一个没有指向任何东西的指针!您可以使用malloc()
,但最好的办法就是传递堆栈中某些内容的地址。
答案 1 :(得分:3)
你需要使用 - >操作员而不是那时。访问字段时的运算符。像这样:cur->tv_sec
。
您还需要分配timeval结构。目前,您正在向函数gettimeofday()传递一个随机指针。
struct timeval cur;
gettimeofday(&cur);
printf("%ld.%ld", cur.tv_sec, cur.tv_nsec);
答案 2 :(得分:2)
变量cur
是timeval类型的指针。您需要有一个timeval 变量并将其地址传递给该函数。类似的东西:
struct timeval cur;
do_gettimeofday(&cur);
您还需要
#include<linux/time.h>
具有struct timeval的定义和函数do_gettimeofday
的声明。
或者,您可以使用gettimeofday
中的sys/time.h
功能。
答案 3 :(得分:1)
您需要包含sys / time.h而不是time.h,struct timeval在/usr/include/sys/time.h中定义,而不在/usr/include/time.h中定义。