在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
编译器时 - 例如Gcc,Clang甚至是I.C.L. - 在Linux中,clock
返回值是否包装或不知道POSIX和c标准使用相同的标题time.h
?
注意:可以使用任何平台代替Linux,我在这里用它来举例。
由于
答案 0 :(得分:1)
这是POSIX中的错误。它已被报告,已解决,并将在下一版本中修复。请参阅:http://austingroupbugs.net/view.php?id=686
我怀疑要修复所有错误的实施需要花费更长的时间。
答案 1 :(得分:0)
POSIX要求与C标准中的要求保持一致,但更严格。
C标准要求编译器定义CLOCKS_PER_SEC。 POSIX也是如此,但它说它必须有一个特定的值。
C标准并没有真正说出关于环绕的内容 - 没有直接声明它可以包装,但也没有禁止说它不能。考虑到有限的尺寸,它最终会不可避免地包裹起来。