[英]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.