任何帮助都将非常感激。提前致谢
我无法在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
答案 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或未定义,则使用随编译器提供的标准库在您的设备上无法使用该例程。