c++ - 将 GetTickCount() vxWorks 转换为 Linux

标签 c++ linux vxworks

我正在将一些 vxWorks 代码移植到 Linux。

我看了这个answer它推荐 CLOCK_MONOTONIC .这是以下定义的合适替代品吗:

#define GetTickCount()    ((1000.0 * (double)tickGet())/((double)sysClkRateGet())))

?

最佳答案

GetTickCount是这样描述的 Windows API:

Retrieves the number of milliseconds that have elapsed since the system was started, up to 49.7 days

是的,CLOCK_MONOTONIC是要使用的正确 POSIX 时钟。这是未经测试的代码:

double GetTickCount(void) 
{
  struct timespec now;
  if (clock_gettime(CLOCK_MONOTONIC, &now))
    return 0;
  return now.tv_sec * 1000.0 + now.tv_nsec / 1000000.0;
}

关于c++ - 将 GetTickCount() vxWorks 转换为 Linux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7729686/

相关文章:

c++ - 获得对私有(private)成员的访问权限以在 C++ 中进行测试

c - 程序退出状态

python - 如何使用python子进程调用在命令中使用管道

symAdd 可以用来覆盖 sysSymTbl 中的现有符号吗?

c++ - 样式化 Qml 桌面组件

Visual Studio 2012 中的 C++ 单元测试

vxworks - 在 PC 上模拟目标

unix - 管道和消息队列之间的所有区别是什么?

c++ - 使用类的公共(public)方法设置类的私有(private)属性,C++

java - 如何使用 Java 将 RAW 数据写入文件?例如与 : nc -l 8000 > capture. raw 相同