You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何累加两个C++ chrono duration?函数计时求和编译报错求助

问题解决:C++ chrono库统计函数总耗时编译错误

先看你代码里的两个核心问题:

  1. 类型定义错误:你写的static duration<microseconds> full_exec_time{};完全搞错了用法。microseconds本身就是std::chrono::duration的特化类型(等价于std::chrono::duration<long long, std::micro>),不能把它当作duration模板的参数来用。正确的写法是直接用std::chrono::microseconds定义总耗时变量。

  2. 语法笔误:auto start_time = high_resolution_clock::now():末尾的冒号要改成分号。

修正后的完整代码:

#include <chrono>

int foo() {
    // 直接用microseconds类型,而非错误的duration<microseconds>
    static std::chrono::microseconds full_exec_time{};
    auto start_time = std::chrono::high_resolution_clock::now();

    // 函数业务逻辑
    // do a bunch of stuff

    auto stop_time = std::chrono::high_resolution_clock::now();
    auto exec_time = std::chrono::duration_cast<std::chrono::microseconds>(stop_time - start_time);
    full_exec_time += exec_time; // 现在类型完全匹配,可正常累加

    // 若需要查看总耗时,可在合适时机调用count()获取数值
    // 例如:std::cout << "Total execution time: " << full_exec_time.count() << " microseconds\n";
    return 0;
}

额外说明:

  • 所有chrono库的类型都要加上std::chrono::命名空间(如果嫌麻烦可以在函数内加using namespace std::chrono;简化,但不建议在头文件中使用)。
  • 用static修饰full_exec_time是正确的,确保每次调用foo时都会累加同一个变量,不会被重新初始化。
  • 如果需要更高精度的计时(比如纳秒),只需把microseconds替换为nanoseconds,同时调整duration_cast的目标类型即可。

内容的提问来源于stack exchange,提问作者bob.sacamento

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 14:55:15