我在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)没有被删除?
我假设这是一个编译器错误;如果是的话,我们将不胜感激。也许是某种演员?