繁体   English   中英

我用相同的 output 声明了相同的 function

[英]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])
{}

1

终端上的错误消息显示 function 边缘的类型冲突???

这个故事的简短版本是——你的编译器是对的......

如果您查看原型:

void edges(int, int, RGBTRIPLE);

它需要三个参数,一个intintanonymous 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM