1

在 POSIX 2008 的部分clock函数定义中:

clock() 返回的值可能会在某些实现中回绕。

CLOCKS_PER_SEC 被定义为一百万<time.h>

在 C 标准clock函数中有重要说明:

为了测量程序花费的时间,应该在程序开始时调用时钟函数,并从后续调用返回的值中减去它的返回值。

CLOCKS_PER_SEC:扩展为clock_t 类型的表达式(如下所述),它是时钟函数返回的值的每秒数。

在 POSIX 中,他们说 POSIX 标准中的信息与 c 标准一致,但是在 c 标准CLOCKS_PER_SEC中是实现定义的,与 POSIX 不同的是,在 c 标准中不应该发生包装 - 从用于计算应用程序运行时间的示例中得到- 但在 POSIX 中,他们说包装将每 36 分钟发生一次。

当我c在 Linux 中使用编译器(例如 Gcc、Clang 甚至 ICL)时,clock返回值是否会换行或不知道 POSIX 和 c 标准使用相同的标头time.h

注意:不是Linux,而是任何平台都可以使用,我在这里举个例子。

谢谢

4

2 回答 2

1

这是 POSIX 中的一个错误。已报告,已解决,并将在下一个版本中修复。见:http ://austingroupbugs.net/view.php?id=686

我怀疑修复所有有缺陷的实现需要更长的时间。

于 2013-09-08T06:12:16.763 回答
0

POSIX 要求与 C 标准中的要求一致,但比 C 标准中的要求更严格。

C 标准要求 CLOCKS_PER_SEC 由编译器定义。POSIX 做同样的事情,但说它必须有一个特定的值。

C 标准并没有真正说明环绕 - 没有直接声明它可以环绕,但也没有禁止说它不能。给定一个有限的大小,它最终还是不可避免地会环绕。

于 2013-09-08T03:16:39.697 回答