【发布时间】:2014-08-20 14:49:04
【问题描述】:
我正在使用此代码:
struct timeval tv;
time_t nowtime;
struct tm *nowtm;
char tmbuf[64], buf[64];
gettimeofday(&tv, NULL);
nowtime = tv.tv_sec;
nowtm = localtime(&nowtime);
strftime(tmbuf, sizeof tmbuf, "%Y-%m-%d %H:%M:%S", nowtm);
snprintf(buf, sizeof buf, "%s.%06d", tmbuf, tv.tv_usec);
来自这个 SO 答案:
https://stackoverflow.com/a/2409054/997112
以可读的格式打印一个 struct timeval。但是,我收到此编译器警告:
warning: format '%06d' expects type 'int', but argument 5 has type '__suseconds_t'
有人可以帮忙吗?
【问题讨论】:
-
非常自我解释:
tv_usec结构的tv成员是__suseconds_t类型。但是,这是一个 long 的 typedef,因此您可以使用 printf 将其显示为 long 数字:将%06d替换为%06ld -
@LoveMetal 好吧,我想知道为什么有这么多赞成票的答案会有问题。这是因为我使用的系统吗?
-
嗯...我也想知道 xD。尝试一下
long,它通常可以解决一个问题。 -
@LoveMetal 成功了!作为答案,我会接受。