首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我需要一个在ansi c中提供精确到毫秒的实时时钟?

我需要一个在ansi c中提供精确到毫秒的实时时钟?
EN

Stack Overflow用户
提问于 2010-05-26 23:40:36
回答 3查看 3.8K关注 0票数 1

我需要一个在ansi c中提供精确到毫秒的实时时钟?

我正在windows上工作,一个windows基础的库也是可以接受的,比x提前。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-05-26 23:56:10

在C11之前,你不能使用可移植的代码来做到这一点。

从C11开始,您可以使用timespec_get,它通常(但不一定)提供毫秒或更高的分辨率。从C23开始,您可以调用timespec_getres来了解所提供的分辨率。

由于您使用的是Windows,因此您需要从一开始就意识到Windows不是一个实时系统,所以您所做的任何事情都不能真正保证是准确的。也就是说,您可以从timeBeginPeriod(1);开始,将多媒体计时器的分辨率设置为1毫秒。然后,您可以调用timeGetTime()以1ms的分辨率检索当前时间。完成计时后,调用timeEndPeriod(1)将计时器分辨率设置回默认值。

票数 1
EN

Stack Overflow用户

发布于 2010-05-26 23:47:15

在ANSI中,您不能确保底层系统以毫秒为单位提供准确性。但是,为了获得最大程度的详细信息,您可以使用clock()函数,该函数返回自进程启动以来的时间(以节拍为单位),其中节拍的持续时间由CLOCKS_PER_SEC定义

代码语言:javascript
复制
#include <time.h>

double elapsed; // in milliseconds
clock_t start, end;

start = clock();

/* do some work */

end = clock();
elapsed = ((double) (end - start) * 1000) / CLOCKS_PER_SEC;

来自GNU的documentation

票数 1
EN

Stack Overflow用户

发布于 2010-05-26 23:54:48

ANSI时钟()将给出毫秒的精度时钟,但不是精度,因为这取决于window的系统时钟,它的精度为50毫秒或在这个范围内的某个地方。如果你需要一些更好的东西,那么你可以使用Windows API QueryPerformanceCounter,它也有它自己的警告。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2914486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档