Can any one tell me how to typecast a char*
pointer to int*
in OpenCL kernel function??
I tried ((int*) char_pointer)
but it is not working.
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
You have to qualify the pointer with the correct address space, I think.
If you don't specify the address space, __private
is assumed, but your source pointer seems to be a __global
pointer (from your comment), so the address spaces are incompatible.
So try to use (__global int*)
instead of just (int*)
.
回答2:
Stuff the pointers in a union, initialize with a char*, use it with the int*:
union {
char *cp;
int *ip;
} ptr;
ptr.cp = allocatedBuf;
a[0] = *(ptr.ip);
Ugly, but does the trick without casts, at least in C. It's undefined behaviour, but hey, you're not using this in a heart monitor or with nuclear warheads at the other end, right?