如何将结构成员传递给函数

时间:2014-01-02 08:36:52

标签: c structure libevent

我需要使用libevent编写C代码。 这简要说明了我的期望。从stdin开始,角色将经过in_read_cbin_read_cb会发送给master_read_cb。然后master_read_cb将发送到系统进行处理。这两个函数由libevent设置。因此传递给它们的变量类型是固定的。

void in_read_cb(struct bufferevent *bev, void *data)
{
//do something
}

void master_read_cb(struct bufferevent *bev, void *data)
{
//do something
}

问题是,我需要将void *data放入结构中,同时添加一个新变量作为master_read_cb何时开始处理的标识符。它看起来像这样:

typedef struct _new_data
{
void *data;
int start;
} new_data;

void in_read_cb(struct bufferevent *bev, struct new_data->data)
{
//do something
//when it meets a condition, new_data->start = 1;
}

void master_read_cb(struct bufferevent *bev, struct new_data->data)
{
//check new_Data->start
//will sent the character for processing if start = 1
}

这是完全错误的,因为我传递了这个函数。我怎么能以正确的方式做到这一点?

1 个答案:

答案 0 :(得分:0)

你需要这样的东西并将指针传递给struct _new_data

void in_read_cb(struct bufferevent *bev, void *new_data_ptr)
{
    new_data *ndata = new_data_ptr;
    //do something
    //when it meets a condition, ndata->start = 1;
}

void master_read_cb(struct bufferevent *bev, void *new_data_ptr)
{
    new_data *ndata = new_data_ptr;
    //check ndata->start
    //will sent the character for processing if start = 1
}