编译器C99 GNU99

时间:2014-12-05 21:35:40

标签: c

任何帮助都将非常感激。提前致谢

我无法在time.h文件

中的kernel.cl中使用这些功能

我的main.cpp可以使用包含。

我的time.h/usr/include,我尝试使用std=gnu99,但不知怎的,我仍然认为我在使用C99

我的kernel.cl有

#include "time.h"                                                               
#define _POSIX_C_SOURCE >= 199309L**** 

.....
.....
struct timespec tp_start, tp_end;                                              
clock_gettime(CLOCK_MONOTONIC, &tp_start);

我的错误是

g++  -c -O3 -fopenmp -I/usr/include main.cpp

echo Compiling main.cpp

Compiling main.cpp

cl6x -mv6600 --abi=eabi -I/include  -I/usr/share/ti/cgt-c6x/include -I/usr/share/ti/opencl -I/usr/include  -c -o3 ccode.c

echo Compiling ccode.c

Compiling ccode.c

clocl  -I/usr/include -std=gnu99  kernel.cl ccode.obj

kernel.cl:50:17: error: variable has incomplete type 'struct timespec'

kernel.cl:50:8: note: forward declaration of 'struct timespec'

kernel.cl:50:27: error: variable has incomplete type 'struct timespec'

kernel.cl:50:8: note: forward declaration of 'struct timespec'

kernel.cl:51:1: warning: implicit declaration of function 'clock_gettime' is invalid in C99

kernel.cl:51:15: error: use of undeclared identifier 'CLOCK_MONOTONIC

1 个答案:

答案 0 :(得分:2)

您正在使用特定于Texas Instruments的编译器进行编译,以便与嵌入式设备一起使用。 Linux上clock_gettime()的联机帮助页意味着并非所有POSIX系统都实现了API,并告诉我们如何检查:

  

"在可用这些功能的POSIX系统上,符号   _POSIX_TIMERS定义为大于0的值。符号_POSIX_MONOTONIC_CLOCK,_POSIX_CPUTIME,_POSIX_THREAD_CPUTIME   表示CLOCK_MONOTONIC,CLOCK_PROCESS_CPUTIME_ID,   CLOCK_THREAD_CPUTIME_ID可用。 (另请参阅sysconf(3)。)"

因此,如果unistd.h中的_POSIX_TIMERS为0或未定义,则使用随编译器提供的标准库在您的设备上无法使用该例程。