关于使用clock_gettime函数报错的问题

本文介绍了解决在Linux环境下使用C语言编程时遇到的CLOCK_REALTIME未声明错误的方法,包括确保包含了正确的头文件、添加特定的宏定义以及在Makefile中指定编译选项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在linux下写C程序的时候,出现了这个错误

error: ‘CLOCK_REALTIME’ undeclared (first use in this function)
 #  define CLOCK_MONOTONIC CLOCK_REALTIME
                           ^
note: in expansion of macro ‘CLOCK_MONOTONIC’
         if (clock_gettime(CLOCK_MONOTONIC,&t) != 0) {
                           ^
note: each undeclared identifier is reported only once for each function it appears in
 #  define CLOCK_MONOTONIC CLOCK_REALTIME
                           ^
note: in expansion of macro ‘CLOCK_MONOTONIC’
         if (clock_gettime(CLOCK_MONOTONIC,&t) != 0) {

这里面的错误有好几个原因

其一:是要看是否包含clock_gettime()函数的头文件,#include <time.h>,这个可以再man手册里面查询;

其二:是要在程序开始加上如下代码(也就是main函数之前,因为这个是宏定义):

#ifdef _GNU_SOURCE
# undef  _XOPEN_SOURCE
# define _XOPEN_SOURCE 600
# undef  _XOPEN_SOURCE_EXTENDED
# define _XOPEN_SOURCE_EXTENDED 1
# undef  _LARGEFILE64_SOURCE
# define _LARGEFILE64_SOURCE 1
# undef  _BSD_SOURCE
# define _BSD_SOURCE 1
# undef  _SVID_SOURCE
# define _SVID_SOURCE 1
# undef  _ISOC99_SOURCE
# define _ISOC99_SOURCE 1
# undef  _POSIX_SOURCE
# define _POSIX_SOURCE 1
# undef  _POSIX_C_SOURCE
# define _POSIX_C_SOURCE 200112L
# undef  _ATFILE_SOURCE
# define _ATFILE_SOURCE 1
#endif

其三:在编译 程序时写的makefile中要加上如下语句:-D _GNU_SOURCE

make:
	gcc -D _GNU_SOURCE  rnnoise_demo.c rnnoise.c -o main -lm -std=c99

上面代码中 -lm 是为了编译数学函数sinf(),conf()等,防止其报错。 数学函数头文件 #include <math.h>。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

瑟寒凌风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值