This question already has answers here:
GCC with -std=c99 complains about not knowing struct timespec
(3个答案)
已关闭6年。
我正在尝试使用
我尝试使用的任何类型的
我包括的标题是:
我在32位Ubuntu 13.10上并使用以下
如果添加标志
这是代码的一部分,以防万一:
谢谢
然后我开始出现
而不是
(3个答案)
已关闭6年。
我正在尝试使用
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>
我在32位Ubuntu 13.10上并使用以下
gcc
在CFLAGS
上进行编译:-g -Wall -pedantic -std=c99
如果添加标志
-D_POSIX_C_SOURCE=199309L
,我会得到error: unknown type name ‘timespec’
和有关使用timespec
的警告。这是代码的一部分,以防万一:
timespec time1, time2;
int temp;
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &time1);
.
.
.
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &time1);
/*code stuff*/
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &time2);
谢谢
最佳答案
将this和this答案放在一起,我就能使它起作用。我必须添加_POSIX_C_SOURCE
宏,以确保预处理器正确获取了库功能,我通过在所有包含之前添加以下行来做到这一点:
#define _POSIX_C_SOURCE 199309L
然后我开始出现
unknown type name timespec
错误,因为您必须明确告诉编译器timespec
是struct
,所以发生了这种错误。通过编写来解决此问题:struct timespec time1, time2;
而不是
timespec time1, time2;
。10-08 09:09