2012-01-19 9 views
0

なぜこのコードが機能しないのか説明できますか?ポインタ演算(OpenCL)のエラー

__kernel void foo(__global const void* a) 
{ 
    __global const uchar* currentPosition = (__global uchar*) a; 

    // Update the position 
    currentPosition += 4; 
} 

増分後にcurrentPositionの値を読み取ろうとすると、算術演算をしないときと同じ結果になります。

どうしてですか?

ありがとうございます。

+0

あなたがcurrentPosition' 'の値を読んで何を意味するか:あなたは値がいけない' currentPosition'(によって指さ読みになることを意味していますあなたが 'currentPosition'が同じメモリアドレスを指していることを意味していますか? – Grizzly

答えて

1

おそらくcurrentPositionを宣言する 'const'キーワードです。 C++では値を変更できません。宣言の際にはすでにcurrentPositionを設定しています。

+0

このコードでは違いはありません' currentPosition'は ' const uchar'ですが、ポインティングされた値は決して変更されず、ポインタ自体のみが変更されます。 – Grizzly

0

昨日夜にエラーが発生しました。問題は、ポインタの算術ではなく、バッファ内のデータの整列であるです。

申し訳ありませんがみんなが、私はOpenCLの中に新たなんだ:(