C-为什么getTimeofday返回怪异的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;

我要以某种方式包括包含struct timeval定义的标题组合(否则您正在提供自己的定义),而不是gettimeofday()的原型。如果在函数调用点上可见正确的原型,则代码不应完全编译。如果您的编译器不会发出有关缺乏原型的警告,那么您应该弄清楚如何使其这样做(并始终以这种方式编译),或者获得更好的编译器。

相关内容

  • 没有找到相关文章

最新更新