所以我尝试使用这段代码进行基准测试:
#include <time.h>
#include <sys/time.h>
#include <sys/resource.h>
double get_time()
{
struct timeval t;
struct timezone tzp;
gettimeofday(&t, &tzp);
return t.tv_sec + t.tv_usec*1e-6;
}
但出于某种原因,我不断收到此错误
error: storage size of ‘tzp’ isn’t known
warning: unused variable ‘tzp’
任何帮助都将不胜感激。
答案 0 :(得分:5)
您定义了_XOPEN_SOURCE=500
。根据{{3}},第二个参数的类型为void*
,且必须为NULL
:
int gettimeofday(struct timeval *tp, void *tzp);
[..]
如果tzp不是空指针,则行为未指定。
如果你想要linux手册中指定的原型,你需要
#define __USE_BSD
但是,如果您传递NULL
以外的任何内容,则会返回错误。
答案 1 :(得分:1)
你可以摆脱&#39; tzp&#39;变量
来自gettimeofday手册页:
If either tv or tz is NULL, the corresponding structure is not set or returned. The use of the timezone structure is obsolete; the tz argument should normally be specified as NULL.
所以你的代码应该是这样的:
#include <time.h>
#include <sys/time.h>
#include <sys/resource.h>
double get_time()
{
struct timeval t;
gettimeofday(&t, NULL);
return t.tv_sec + t.tv_usec*1e-6;
}