在通过MacPorts安装必要的库后编译我在Mac OS X上编写的程序时,我收到此错误:
In function 'nanotime':
error: 'CLOCK_REALTIME' undeclared (first use in this function)
error: (Each undeclared identifier is reported only once
error: for each function it appears in.)
Run Code Online (Sandbox Code Playgroud)
它似乎clock_gettime没有在Mac OS X中实现.是否有另一种方法可以在纳秒内获得纪元时间?不幸的是在几微秒内.gettimeofday
我写了一个简单的计时器函数来计算start和之间经过的时间end
double mytimer(struct timeval *start, struct timeval *end)
{
return (end->tv_sec - start->tv_sec) + (end->tv_usec - start->tv_usec)*1e-6;
}
Run Code Online (Sandbox Code Playgroud)
gcc给出以下警告:
警告:从'__suseconds_t'转换为'double'可能会改变其值
警告:从'__time_t'转换为'double'可能会改变其值
以下是timeval的定义:
struct timeval {
time_t tv_sec; /* seconds */
suseconds_t tv_usec; /* microseconds */
};
Run Code Online (Sandbox Code Playgroud)
所以我的问题是为什么C定义了这么多不兼容的类型而不是简单地使用原始类型如int short...?它根本不是用户友好的.
我如何对这些类型进行算术运算?
大多数人似乎忽略了我的第二个问题.什么是添加两种不同的类型,如标准的方式time_t和suseconds_t?