[英]I declared the same function with same output
在 C 上编程,奇怪的是我将 void edges(...) output 声明为 void,并在 int main(void) 下面执行相同的操作,但是,我收到一条错误消息,我正在声明一个不同的 Z78E6221F6393D14CEDZF6393D14CEDZF666666。 我想知道这有什么问题?
#include <math.h>
#include <stdio.h>
#include <cs50.h>
typedef struct{
int rgbtBlue;
int rgbtGreen;
int rgbtRed;
}
RGBTRIPLE;
int make_image_array(int);
void edges(int, int, RGBTRIPLE);
int main(void){
edges(height, width, image[height][width]);
}
void edges(int height, int width, RGBTRIPLE image[height][width])
{}
终端上的错误消息显示 function 边缘的类型冲突???
这个故事的简短版本是——你的编译器是对的......
如果您查看原型:
void edges(int, int, RGBTRIPLE);
它需要三个参数,一个int
、 int
和anonymous struct RGBTRIPLE
。 但是,当您定义function 时,您定义RGBTRIPLE
的二维数组,例如
void edges(int height, int width, RGBTRIPLE image[height][width])
{}
看到不同? 原型中的单个RGBTRIPLE
和定义中的RGBTRIPLE[height][width]
。
修复原型的最简单方法是提供可用作 2D VLA 所需尺寸的命名变量,例如
void edges(int a, int b, RGBTRIPLE[a][b]);
更好的是,完全取消原型并简单地在main()
之上定义edges
——这样你就消除了任何不匹配的机会。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.