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

C/C++编译提示getrawmonotonic未在此作用域声明如何解决

getrawmonotonic 函数调用问题解决方案

所需头文件

你引入的<time.h>和<sys/time.h>是POSIX标准时间头文件,不包含Linux特有getrawmonotonic函数的声明,需要额外引入内核层面的时间头文件:

#include <linux/time.h>

编译配置要求

getrawmonotonic属于非POSIX标准的Linux私有接口,默认不会被标准头文件暴露,需要开启_GNU_SOURCE宏才能正常识别,有两种配置方式:

  • 代码层面:在所有头文件引入之前添加宏定义
    #define _GNU_SOURCE
    #include <linux/time.h>
    // 其他头文件引入
    
  • 编译命令层面:编译时添加-D_GNU_SOURCE参数,示例如下
    gcc your_code.c -o output -D_GNU_SOURCE
    # C++ 场景使用g++同理
    g++ your_code.cpp -o output -D_GNU_SOURCE
    

兼容替代方案(推荐)

如果不需要严格使用getrawmonotonic接口,更推荐使用POSIX标准的clock_gettime搭配CLOCK_MONOTONIC_RAW时钟id,二者功能完全一致(返回不含NTP调整的单调时钟时间),且不需要引入Linux私有头文件,兼容性更强:

#include <time.h>

struct timespec ts;
clock_gettime(CLOCK_MONOTONIC_RAW, &ts);

Ubuntu 20 自带的glibc版本已经将clock_gettime整合进主libc库,不需要额外链接lrt库即可使用。

内容的提问来源于stack exchange,提问作者David Callanan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 06:06:03