2

我试图编写一个辅助函数,但在构建程序时总是出现这个错误。

:24:7: 错误: 'AddVector' 的类型冲突浮动 AddVector(float a, float b) ^:19:12: 注意: 先前的隐式声明在这里浮动 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;
}

但是当我对整数类型执行相同操作时,它可以工作:

__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 函数后声明它。将声明移到用法之上(即,在内核之上),它会编译得很好。

要了解有关“隐式函数”位的更多信息,请参见此处

此外,使用英特尔离线 OpenCL 编译器 - 我看到两个内核的警告相同。

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