包含函数指针的struct,其自身作为C中的返回类型

时间:2013-03-18 11:16:01

标签: 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);

尽管如此,我收到以下警告信息:“它的范围只是这个定义或声明,可能不是你想要的”。这是对还是错?

1 个答案:

答案 0 :(得分:7)

您的结构需求需要像这样定义:

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`