我有关于函数指针和在 C 中实现继承的作业。我收到关于 Aralik、VerilenlerArasindan 和 Harfler 的“指针类型不兼容”错误。有什么问题吗?
RastgeleKarakter.h
struct RASTGELEKARAKTER{
Random ran;
char (*Harf)(struct RASTGELEKARAKTER*);
char* (*Harfler)(struct RASTGELEKARAKTER*);
char* (*Aralik)(struct RASTGELEKARAKTER*);
char* (*VerilenlerArasindan)(struct RASTGELEKARAKTER*);
char* (*Cumle)(struct RASTGELEKARAKTER*);
void (*YokEt)(struct RASTGELEKARAKTER*);
};
typedef struct RASTGELEKARAKTER* RastgeleKarakter;
RastgeleKarakter RastegeleKarakterOlustur();
char RandomHarf(RastgeleKarakter);
char* RandomHarfler(RastgeleKarakter,unsigned);
char* RandomAralik(RastgeleKarakter,unsigned,char,char);
char* RandomVerilenlerArasindan(RastgeleKarakter,unsigned,char*);
char* RandomCumle(RastgeleKarakter);
void RastgeleKarakterYokEt(RastgeleKarakter);
RastgeleKarakter.c
RastgeleKarakter RastegeleKarakterOlustur(){
RastgeleKarakter karakter;
karakter = (RastgeleKarakter)malloc(sizeof(struct RASTGELEKARAKTER));
karakter->ran = RandomOlustur();
karakter->Harf = &RandomHarf;
karakter->Harfler = &RandomHarfler;
karakter->Aralik = &RandomAralik;
karakter->VerilenlerArasindan = &RandomVerilenlerArasindan;
karakter->Cumle = &RandomCumle;
karakter->YokEt = &RastgeleKarakterYokEt;
return karakter;
}
最佳答案
warning: assignment from incompatible pointer type [-Wincompatible-pointer-types] karakter->Harfler = &RandomHarfler;
因为
char* (Harfler)(struct RASTGELEKARAKTER);
但是
char* RandomHarfler(RastgeleKarakter,unsigned);
RandomHarfler 获取两个参数,但 Harfler 必须接收指向函数的指针,该函数仅获取 struct RASTGELEKARAKTER*
warning: assignment from incompatible pointer type [-Wincompatible-pointer-types] karakter->Aralik = &RandomAralik;
因为
char* (Aralik)(struct RASTGELEKARAKTER);
但是
char* RandomAralik(RastgeleKarakter,unsigned,char,char);
RandomAralik 获取 4 个参数,但 Aralik 必须接收指向函数的指针,该函数仅获取 struct RASTGELEKARAKTER*
warning: assignment from incompatible pointer type [-Wincompatible-pointer-types] karakter->VerilenlerArasindan = &RandomVerilenlerArasindan;
因为
char* (VerilenlerArasindan)(struct RASTGELEKARAKTER);
但是
char* RandomVerilenlerArasindan(RastgeleKarakter,unsigned,char*);
RandomVerilenlerArasindan 获取 3 个参数,但 VerilenlerArasindan 必须接收指向仅获取 struct RASTGELEKARAKTER*
关于c - 如何修复 C 中的 "incompatible pointer type"错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55781757/