C新手在这里。试图找出我的程序中的错误。
功能原型:
float* convolve(int (*)[10], int (*)[3], int *, int);
实际功能:
float* convolve(int* ImdataPtr, int* KernelPtr, int* size, int sizeKernel)
如何在main中调用它:
float* output;
output = convolve(input,kernel,sizeIm,3);
编译错误:
program.c:55:8: error: conflicting types for ‘convolve’
请帮助......
答案 0 :(得分:6)
问题是原型不匹配。确保类型完全相同,因为int(*)[10]
和int(*)[3]
的类型不同于int*
:
float* convolve(int(*)[10], int(*)[3], int*, int);
float* convolve(int (*ImdataPtr)[10], int (*KernelPtr)[3], int* size, int sizeKernel) {
// etc
}
你可以(也可能应该)使它们完全相同,包括参数名称:
float* convolve(int (*ImdataPtr)[10], int (*KernelPtr)[3], int* size, int sizeKernel);
float* convolve(int (*ImdataPtr)[10], int (*KernelPtr)[3], int* size, int sizeKernel) {
// etc
}
我必须查找如何声明这些内容,因此您可能会发现C pointer to array/array of pointers disambiguation上的问题也很有用。 int*[3]
是指向int
(仅read it backwards)的指针数组,但int(*)[3]
是指向int
数组的指针。
答案 1 :(得分:1)
您的原型为其第一个和第二个参数指定了指向整数数组的指针,而在您的函数中,您只指定了整数指针。
您需要更正原型或功能定义。