尝试使用clock_gettime(),但获得了大量未宣布的"未宣布的#34;来自time.h的错误

时间:2014-11-05 23:29:26

标签: c time libraries

我正在尝试使用clock_gettime()来衡量函数的运行时间。我包括time.h,我在Makefile中添加了-lrt,并在Eclipse CDT上添加了正确的路径。但是,当我尝试编译时,我会遇到这些错误:

experiments.c: In function ‘main’:
experiments.c:137:2: error: unknown type name ‘timespec’
timespec time1, time2;
^
experiments.c:139:2: warning: implicit declaration of function ‘clock_gettime’ [-Wimplicit-function-declaration]
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &time1);
^
experiments.c:139:16: error: ‘CLOCK_PROCESS_CPUTIME_ID’ undeclared
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &time1);

我尝试使用的任何类型的CLOCK_都会发生这种情况。我一直在阅读大量的问题/答案和教程,但却找不到有用的东西。

我所包含的标题是:

#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <time.h>

我使用Ubuntu 13.10 32位并使用以下gccCFLAGS上进行编译:{{1​​}}

如果我添加标记-g -Wall -pedantic -std=c99,我会收到-D_POSIX_C_SOURCE=199309L以及有关使用error: unknown type name ‘timespec’的警告。

这是代码的一部分,以防它有用:

timespec

由于

1 个答案:

答案 0 :(得分:4)

thisthis答案放在一起,我就能让它发挥作用。我必须添加_POSIX_C_SOURCE宏,以确保预处理器正确地获取库功能,我在所有包含之前添加了这一行:

#define _POSIX_C_SOURCE 199309L

然后我开始收到unknown type name timespec错误,因为您必须明确告诉编译器timespecstruct。修正了它:

struct timespec time1, time2; 

而非timespec time1, time2;