簡體   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