2

補助関数を作成しようとしましたが、プログラムをビルドすると常にこのエラーが発生します。

:24:7: エラー: 'AddVector' の型が競合しています float AddVector(float a, float b) ^ :19:12: 注意: 以前の暗黙の宣言はここにあります float a = AddVector(b,c);

私のカーネル:

__kernel void square(
__global float* input,
__global float* output,
const unsigned int count)
{
//...
float b = 2.f;
float c = 4.f;
float a = AddVector(b,c);
}
float AddVector(float a, float b)
{
return a + b;
}

しかし、integer-typで同じことをするとうまくいきます:

__kernel void square(
__global float* input,
__global float* output,
const unsigned int count)
{
//...
int b = 2;
int c = 4;
int a = AddVector(b,c);
}
int AddVector(int a, int b)
{
return a + b;
}

私は何を間違っていますか?

PS: このカーネルは何もしていません - 間違いを見つけるためだけに

4

1 に答える 1

4

あなたの問題は、使用後に AddVector 関数を宣言していることです。宣言を使用法の上 (つまり、カーネルの上) に移動すると、正常にコンパイルされます。

「暗黙の関数」ビットの詳細については、こちらを参照してください。

また、Intel オフライン OpenCL コンパイラを使用すると、両方のカーネルで同じ警告が表示されます。

    :9:9: warning: implicit declaration of function 'AddVector' is invalid in C99
于 2012-12-18T21:08:25.783 に答える