3

OpenCLカーネル関数でchar*ポインタを型キャストする方法を教えてもらえますか?int*試し((int*) char_pointer)ましたが、動作しません。

4

2 に答える 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 に答える