'tzp'的存储大小未知

Gri*_*han 2 c

所以我正在尝试使用这段代码进行基准测试:

#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;
}
Run Code Online (Sandbox Code Playgroud)

但由于某种原因,我不断收到此错误

error: storage size of ‘tzp’ isn’t known
warning: unused variable ‘tzp’
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激.

Tob*_*ndt 5

你定义了_XOPEN_SOURCE=500.根据X/Open 5,第二个参数是类型void*,必须是NULL:

int gettimeofday(struct timeval *tp, void *tzp);
Run Code Online (Sandbox Code Playgroud)

[..]

如果tzp不是空指针,则行为未指定.

如果你想要linux手册中指定的原型,你需要

#define __USE_BSD
Run Code Online (Sandbox Code Playgroud)

但是,如果您传递的除外NULL,它将返回错误.