我有一个应用程序,该应用程序调用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()
的原型。如果在函数调用点上可见正确的原型,则代码不应完全编译。如果您的编译器不会发出有关缺乏原型的警告,那么您应该弄清楚如何使其这样做(并始终以这种方式编译),或者获得更好的编译器。