gpt4 book ai didi

c++ - std::chrono::steady_clock::now 如何报告错误?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:23:50 25 4
gpt4 key购买 nike

这与 my previous question 有关我问 std::chrono::steady_clock::now 是否应该是 noexcept。现在我知道了,我应该想知道这个函数是如何报告错误的吗?例如,此功能在 Linux 上的常见实现使用 clock_gettime可以返回错误。

最佳答案

Linux clock_gettime 工具可能报告的所有错误在 std::chrono::steady_clock::now() 的调试实现中是不可能的.

错误是:

int clock_gettime(clockid_t clk_id, struct timespec *tp);


EFAULT

tp points outside the accessible address space.

std::chrono::steady_clock::now() 中没有用户提供的tp 出错。如果 std::chrono::steady_clock::now() 将错误的 tp 传递给 clock_gettime,这只是 中的错误steady_clock 很容易修复。

EINVAL

The clk_id specified is not supported on this system.

std::chrono::steady_clock::now() 中没有用户提供的 clk_id 出错。如果 std::chrono::steady_clock::now() 将错误的 clk_id 传递给 clock_gettime,这只是 中的错误必须修复的 steady_clock

请注意,steady_clock 的实现不保证可移植,可能必须移植到任何给定平台并测试其正确性。在某些平台上,steady_clock 可能无法根据 clock_gettime 实现。

EPERM

clock_settime() does not have permission to set the clock indicated.

不适用于 steady_clock,因为没有用于设置时间的 API。

关于c++ - std::chrono::steady_clock::now 如何报告错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18109870/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com