printf出错并且不显示结果

时间:2013-06-26 17:35:35

标签: printf opencl

我在opencl中遇到printf的问题 这是我的代码的一部分:

clGetEventProfilingInfo(timing_event, CL_PROFILING_COMMAND_START,
sizeof(time_start), &time_start, NULL);
clGetEventProfilingInfo(timing_event, CL_PROFILING_COMMAND_END,sizeof(time_end),
&time_end, NULL);
total_time = time_end - time_start;
printf("\nAverage Time In Nanoseconds  = %lu\n" , total_time );

我已经声明了这样的变量:

cl_event timing_event;
cl_ulong time_start, time_end;
cl_ulong total_time;

但是当我编译程序时,mingw32-gcc会出现这个错误:

format %lu expects argument of type 'long unsigned int' but argument 2 has type 'cl_ulong' 
[-Wformat]

并且* .exe不会运行。所以有没有身体帮助我?我对这个错误很困惑!!!

2 个答案:

答案 0 :(得分:0)

cl_ulong在所有平台上都是64位无符号的,以匹配OpenCL C类型ulong。它可能与C类型'unsigned long'不同。在printf中尝试%llu。

答案 1 :(得分:0)

cl_ulong在cl_platform中定义为:

typedef unsigned __int64 cl_ulong;

所以%llu是正确的。要使%llu与mingw一起使用,请在包含文件之前添加此行:

#define __USE_MINGW_ANSI_STDIO 1

如果没有此定义,则必须使用非标准Microsoft等效项%I64u。