为什么 gettimeofday return 很奇怪 tv_sec?
Why does gettimeofday return weird tv_sec?
我有一个应用程序调用 gettimeofday
来存储 tv_sec,其中那部分代码从 运行 开始。这段代码很简单:
struct timeval tvnow;
gettimeofday(&tvnow);
int initialTime = tvnow.tv_sec;
它通常工作正常,但有时我会得到意想不到的结果,例如
tvnow = {tv_sec = 1024, tv_usec = 0}
initialTime = 1401591
或
tvnow = {tv_sec = 1024, tv_usec = 0}
initialTime = 2439903
为什么会这样?
此致
您调用 gettimeofday()
时参数个数错误。结果行为是未定义的。如果您不需要时区信息,则将 NULL
作为第二个参数传递:
struct timeval tvnow;
gettimeofday(&tvnow, NULL);
int initialTime = tvnow.tv_sec;
我假设您以某种方式包含了 headers 的组合,其中包含 struct timeval
的定义(或者您提供了自己的定义),但不是gettimeofday()
的原型。如果在函数调用时有一个可见的正确原型,那么代码根本就不会编译。如果您的编译器没有发出关于缺少原型的警告,那么您应该弄清楚如何让它这样做(并始终以这种方式编译),或者获得更好的编译器。
我有一个应用程序调用 gettimeofday
来存储 tv_sec,其中那部分代码从 运行 开始。这段代码很简单:
struct timeval tvnow;
gettimeofday(&tvnow);
int initialTime = tvnow.tv_sec;
它通常工作正常,但有时我会得到意想不到的结果,例如
tvnow = {tv_sec = 1024, tv_usec = 0}
initialTime = 1401591
或
tvnow = {tv_sec = 1024, tv_usec = 0}
initialTime = 2439903
为什么会这样?
此致
您调用 gettimeofday()
时参数个数错误。结果行为是未定义的。如果您不需要时区信息,则将 NULL
作为第二个参数传递:
struct timeval tvnow;
gettimeofday(&tvnow, NULL);
int initialTime = tvnow.tv_sec;
我假设您以某种方式包含了 headers 的组合,其中包含 struct timeval
的定义(或者您提供了自己的定义),但不是gettimeofday()
的原型。如果在函数调用时有一个可见的正确原型,那么代码根本就不会编译。如果您的编译器没有发出关于缺少原型的警告,那么您应该弄清楚如何让它这样做(并始终以这种方式编译),或者获得更好的编译器。