c - 包含函数指针的结构,其自身作为 C 中的返回类型

标签 c struct function-pointers

得到以下数据结构:

typedef struct
{
    lamp *lamp;
    unsigned char a;
    unsigned char b;
    unsigned char c;
    unsigned char d;
    unsigned char e;
    void (*func)(struct event *);
} event;

结构中的最后一行应该是一个指向函数的指针,该函数的返回类型为 void,并带有指向事件的指针作为参数,例如:

void function(event *evt);

虽然,我收到以下警告消息:“它的范围只是这个定义或声明,这可能不是您想要的”。这是对还是错?

最佳答案

你的结构需要这样定义:

typedef struct event  // <<< note the `event` tag here
{
    lamp *lamp;
    unsigned char a;
    unsigned char b;
    unsigned char c;
    unsigned char d;
    unsigned char e;
    void (*func)(struct event *);
} event;              // <<< you can still keep `event` as a typedef
                      //     which is equivalent to `struct event`

关于c - 包含函数指针的结构,其自身作为 C 中的返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15475488/

相关文章:

c - 如何在 C 中编写自己的 vector 结构

c - 使用 pthreads 逐行读取文件...意外退出

swift - 使用 if 语句访问结构中的枚举值

c - 对于结构变量s1,s2,为什么我可以初始化 "s1={25,3.5}",将s2赋值为 "s1=s2",然后就不能使用“s1={59,3.14}?

c - 如何在 C 的结构中使用函数指针?

c - 1 个函数中的 3 个指针 - 计算器不工作

c - 从 linux 读写 scsi 设备文件,如 sdb,sdc

c - sqlite3_bind_text段错误

带方法的 C++ 结构,不带方法的 C 声明

arrays - 编写一个接受函数列表的变量