1

我在我的 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 *"

为什么我会得到那个?毕竟,字符串文字是 const 的。即使 OpenCL 编译器不让它们成为 const,为什么 "(%u, %u, %u)" 字符串是 const 的,而另一个字符串 (_format) 不是 const 的?

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

4

1 回答 1

5

根据那个 AMD 论坛的帖子,这是一个错误。是的,演员会按照同一篇文章中的建议进行操作:

printf((__constant char *)"%d\n", i);
于 2013-08-13T09:11:43.490 回答