clock_gettime
不再适用于MacOS Sierra。在Xcode8发布之前,我确信我已经正确地编译了这个代码。我真的有点纠结于怎样才能让它正确编译。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
int main(){
struct timespec time1, time2;
clock_gettime(CLOCK_MONOTONIC,&time1);
//Some code I am trying to work out performance of...
clock_gettime(CLOCK_MONOTONIC,&time2);
printf("Time Taken: %ld",time2.tv_nsec - time1.tv_nsec);
}
这样的代码根本无法编译。有人告诉我塞拉时间图书馆已经改变了。我得到一个未定义的
CLOCK_MONOTONIC
编译器错误和一个关于clock_gettime
隐式声明的警告,如果我将CLOCK_MONOTONIC
定义为随机值,则会变成一个错误,因为它只是在链接阶段出错。有人知道要编译和执行代码的修复或解决方法吗?
最佳答案
我认为最近一段时间CLOCK_MONOTONIC
没有出现过。
我相信你想要的可能是mach_absolute_time()
加上一个转换,正如所记录的here;这看起来是单调的,绝对的(你可能知道这是两个不同的东西)。
其他有用的提示可以在以下相关(但我认为不重复)问题中找到:
clock_gettime alternative in Mac OS X(但处理不同的时钟类型)
Monotonic clock on OSX(不是C而是目标C)