0

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’

请帮忙...

4

2 回答 2

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 指针数组/指针数组消歧的问题也很有用。int*[3]是一个指向的指针数组int(只是向后读取),但它int(*)[3]是一个指向int.

于 2013-06-19T19:27:25.547 回答
1

您的原型为其第一个和第二个参数指定指向整数数组的指针,而在您的函数中,您仅指定整数指针。

您需要更正原型或函数定义。

于 2013-06-19T19:28:38.020 回答