相关疑难解决方法(0)

Mac OS X中的clock_gettime替代方案

在通过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

c macos time clock

65
推荐指数
7
解决办法
9万
查看次数

为什么C有这么多不同的类型?

我写了一个简单的计时器函数来计算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_tsuseconds_t

c type-conversion

5
推荐指数
2
解决办法
948
查看次数

标签 统计

c ×2

clock ×1

macos ×1

time ×1

type-conversion ×1