繁体   English   中英

无法在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.

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