[英]how to pass struct pointer as argument in a variable argument function in C
[英]Cannot pass struct pointer as function argument in C
我正在尝试编译一些代码,但我不断收到错误消息:
'; 未知类型名称“ ”;
我已经在main中声明了这些结构,我不确定为什么要得到这个。 我在main之前声明每个函数原型,然后在main之后声明函数声明。
我想我记得做过,不是吗? 我不确定如何早些时候声明这些结构。
我的代码:
void greyScale(Image* image);
void findMaxMin(Pixel** colour,Pixel* max,Pixel* min);
void strech(Image* image);
void findEffect(Image* image,char effect[20]);
int main(int argc, char **argv)
{
char effect[20];
/*file i/o stuff*/
typedef struct Pixel{
int red;
int green;
int blue;
} Pixel;
typedef struct Imagem{
int width;
int height;
Pixel **pixel;
} Image;
Image *image;
/*reads files, calls functions etc..*/
return 0;
}
void greyScale(Image* image)
{
/*code*/
}
void findMaxMin(Pixel** colour,Pixel* max,Pixel* min);
{
/*code*/
}
void strech(Image* image);
{
/*code*/
}
void findEffect(Image* image,char effect[20]);
{
/*code*/
}
查阅此参考C_structures
将typedef移到外面
typedef struct Pixel{
int red;
int green;
int blue;
} Pixel;
typedef struct Imagem{
int width;
int height;
Pixel **pixel;
} Image;
void greyScale(Image* image);
void findMaxMin(Pixel** colour,Pixel* max,Pixel* min);
void strech(Image* image);
void findEffect(Image* image,char effect[20]);
您可以在main
定义结构,因此它们只能在该函数中查看。 这些定义必须在顶层。
typedef struct Pixel{
int red;
int green;
int blue;
} Pixel;
typedef struct Imagem{
int width;
int height;
Pixel **pixel;
} Image;
void greyScale(Image* image);
void findMaxMin(Pixel** colour,Pixel* max,Pixel* min);
void strech(Image* image);
void findEffect(Image* image,char effect[20]);
int main(int argc, char **argv)
{
...
}
...
现在,在使用它们之前先对其进行定义,以便可以使用它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.