3

我正在尝试使用在 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从哪里来?

4

1 回答 1

3

如果我没记错的话,所有“时钟”的东西都是 POSIX 的“实时”扩展的一部分,OSX 没有实现。所以你不会有运气。您必须使用 OSX 的特定功能才能获得具有良好分辨率的时钟。

编辑:P99中,我有一个 OSX 的包装代码,用于类似的 C11 功能timespec_get。不知道这是否真的有用,我没有 Mac,但你可以看看那里。(文件是“p99_threads.h”)

于 2012-11-20T12:20:28.963 回答