我在我的 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 的?
我假设这是一个编译器错误;如果是,将不胜感激解决方法。也许某种演员?