我尝试编写一个辅助函数,但是当我构建程序时,我总是会遇到这个错误。
: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;
}
但是当我使用整数 - 典型值时,它会起作用:
__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:这个内核什么都不做 - 它只是为了找到错误答案 0 :(得分:4)
您的问题是您在使用AddVector函数后声明它。将声明移到使用之上(即,在内核之上),它将编译正常。
要了解有关“隐式函数”位的更多信息,请参阅here。
此外,使用Intel离线OpenCL编译器 - 我看到两个内核都有相同的警告。
:9:9: warning: implicit declaration of function 'AddVector' is invalid in C99