c - 未知类型名称 'clockid_t'

标签 c macos timer posix

我正在尝试在 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/

相关文章:

C 指针转换

macos - 如何在表格单元格 View 中连接 socket ?

objective-c - 获取鼠标的视网膜坐标

multithreading - PerformSelector 单点触控线程

c - 销毁完整链表(C编程)

c - 在 C 中使用指针而不是二维数组字符串

"int array[int]"和 "int *array"之间的混淆

macos - 在 OSX10.10 上找到 libclang.so?

java - 计时器时间表-Java

javascript - 如何反转计数并设置倒计时开始时间?