OpenCLカーネル関数でchar*
ポインタを型キャストする方法を教えてもらえますか?int*
試し((int*) char_pointer)
ましたが、動作しません。
質問する
3604 次
2 に答える
12
ポインタを正しいアドレス空間で修飾する必要があると思います。
アドレス空間を指定しない場合__private
はが想定されますが、ソースポインタは__global
(コメントからの)ポインタのように見えるため、アドレス空間には互換性がありません。
したがって(__global int*)
、だけでなくを使用してみてください(int*)
。
于 2012-05-07T15:07:33.717 に答える
0
ポインタをユニオンに詰め、char *で初期化し、int*で使用します。
union {
char *cp;
int *ip;
} ptr;
ptr.cp = allocatedBuf;
a[0] = *(ptr.ip);
醜いですが、少なくともCでは、キャストなしのトリックは実行されます。これは未定義の動作ですが、心臓モニターや反対側の核弾頭でこれを使用していませんよね?
于 2012-05-07T14:34:56.677 に答える