c - 如何修复 C 中的 "incompatible pointer type"错误?

标签 c function pointers

我有关于函数指针和在 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/

相关文章:

c# - C++ 到 C# 端口问题 : How would I deal with a method that has a double* as a parameter?

c - ubuntu 12.04 无法成功添加系统调用

While 循环参数内的逗号

c - c 语言中数据类型 BYTE、WORD 和 DWORD 的格式说明符?

c - 如何从 g_poll 获取特定错误?

c++ - 将对象拷贝添加到容器的更好方法

math - "Mirroring"一个角度

c - 尝试在自声明数组列表上实现简单的冒泡排序函数

c++ - 'int accidents[5]' 的声明隐藏参数错误

C++ 使用指针合并文本