tm t1类型不完整,无法定义

时间:2011-11-29 04:08:01

标签: c++ unix time.h

我必须编写一个在无限循环中调用sleep(60)的程序。循环中每五次我必须获取当前时间并打印tm_sec字段。

这就是我写的:

#include <stdio.h>
#include <sys/time.h>
#include <unistd.h>

int main()
{
    struct tm t1;
    int i=0;
    for(;;)
    {
        sleep(60);
        if(i%5==0)
            {
                gettimeofday(&t1,NULL);
                printf("%d\n",t1.tm_sec);
            }
        i++;
    }
}

我收到错误aggregate tm t1 has incomplete type and cannot be defined.

我不知道我做错了什么。

3 个答案:

答案 0 :(得分:3)

你想要struct timeval,而不是struct tm。试试这个:

struct timeval t1;

此外,您需要t1.tv_sec,而不是t1.tm_sec

答案 1 :(得分:2)

你错了。选择以下两个中的一个:

#include <sys/time.h>

int gettimeofday(struct timeval *tv, struct timezone *tz);
int settimeofday(const struct timeval *tv, const struct timezone *tz);

或者:

 #include <time.h>

 char *asctime(const struct tm *tm);
 struct tm *gmtime(const time_t *timep);
 struct tm *localtime(const time_t *timep);

答案 2 :(得分:1)

gettimeofday指向timeval,而不是tm,指的是自1970年以来的秒(和微秒)时间。

如果您需要tm,则需要<ctime>中的函数(例如localtime())来转换timeval的秒字段。