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)

10-01 17:40