0

私は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 が実行されません。だから私を助ける体はありますか?私はこのエラーについてとても混乱しています!!!

4

2 に答える 2

0

cl_ulong は cl_platform で次のように定義されています。

typedef unsigned __int64 cl_ulong;

したがって、%llu は正しいです。%llu を mingw で動作させるには、インクルード ファイルの前に次の行を追加します。

#define __USE_MINGW_ANSI_STDIO 1

この定義がないと、非標準の Microsoft の同等物である %I64u を使用する必要があります。

于 2013-06-26T20:57:25.843 に答える