我正在尝试在 Mac OS X 上使用在 Linux 平台上编写的 C 代码。我遇到了与计时器相关的错误:
../src/stinger/timer.c:61:1: error: unknown type name 'clockid_t'
../src/stinger/timer.c:74:2: error: #error "Cannot find a clock!"
指向这段代码。
static clockid_t clockid;
#if defined(CLOCK_REALTIME_ID)
#define CLKID CLOCK_REALTIME_ID
#define CLKIDNAME "CLOCK_REALTIME_ID"
#elif defined(CLOCK_THREAD_CPUTIME_ID)
#define CLKID CLOCK_THREAD_CPUTIME_ID
#define CLKIDNAME "CLOCK_THREAD_CPUTIME_ID"
#elif defined(CLOCK_REALTIME_ID)
#warning "Falling back to realtime clock."
#define CLKID CLOCK_REALTIME_ID
#define CLKIDNAME "CLOCK_REALTIME_ID"
#else
#error "Cannot find a clock!"
#endif
这个错误的原因是什么? clockid_t
类型应该从哪里来?
最佳答案
如果我没记错的话,所有“时钟”的东西都是 POSIX 的“实时”扩展的一部分,它不是由 OSX 实现的。所以你不会有运气。您必须使用 OSX 特定功能才能获得分辨率良好的时钟。
编辑在P99我有一个用于 OSX 的包装器代码,用于类似的 C11 函数 timespec_get
。不知道这是否真的有用,我没有 Mac,但你可以看看那里。 (文件是“p99_threads.h”)
关于c - 未知类型名称 'clockid_t',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13472761/