有人可以帮我解决C中的这个前瞻性声明吗?

时间:2016-09-18 12:13:48

标签: c declaration forward

typedef void* (*_add_elem)(shm_ds_t *ds, void *key, void *value, int size);
typedef void* (*_lookup)(shm_ds_t *ds, void *key);
typedef void  (*_dump)(shm_ds_t *ds);
typedef int   (*_compare)(void *key1, void *key2);

typedef struct shm_ds{
           void *ds;
           _add_elem shm_add_elem;
           _lookup  shm_lookup;
           _dump dump;
           _compare compare;
} shm_ds_t;

它的鸡和蛋问题。我已经定义了一些使用shm_ds_t类型的回调fn指针,但是这种类型是在回调定义之后定义的。类似地,如果我改变顺序,那么它报告与回调定义相同的问题,在本案例中定义之前应该使用回调定义。任何人都可以建议解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

您需要在回调之前定义类型

添加

typedef struct shm_ds shm_ds_t;

在回调之前和之后,使用

struct shm_ds{
           void *ds;
           _add_elem shm_add_elem;
           _lookup  shm_lookup;
           _dump dump;
           _compare compare;
};

你应该好好去。