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