在OpenCL中使用宏的字符串常量的虚假(?)警告

时间:2013-08-13 08:18:34

标签: string macros compilation opencl

我在OpenCL内核中使用以下宏:

#define ided_printf(_format, ...) printf("(%u,%u,%u) " _format, get_global_id(0), get_group_id(0), get_local_id(0), __VA_ARGS__ )

它工作正常。但是,当我编译它时(我在Win7上使用AMD的APP OpenCL库),每次使用宏时都会收到以下警告:

argument of type "const __constant char *" is incompatible with parameter of type "__constant char *"

为什么我会这样做?毕竟,字符串文字是常量。即使OpenCL编译器没有使它们成为const,为什么“(%u,%u,%u)”字符串是const'ed而另一个字符串(_format)没有被删除?

我假设这是一个编译器错误;如果是的话,我们将不胜感激。也许是某种演员?

1 个答案:

答案 0 :(得分:5)

基于AMD论坛的post,这是一个错误。是的,演员会按照同一篇文章的建议去做:

printf((__constant char *)"%d\n", i);