C 如何将结构成员传递给函数
我需要使用libevent编写一个C代码。 这就是我希望做的事情。从stdin中,一个字符将在cb中通过。in_read_cb将发送至master_read_cb。然后,master_read_cb将发送到系统进行处理。这两个函数由libevent设置。因此,传递给它们的变量类型是固定的C 如何将结构成员传递给函数,c,structure,libevent,C,Structure,Libevent,我需要使用libevent编写一个C代码。 这就是我希望做的事情。从stdin中,一个字符将在cb中通过。in_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 buffe
void in_read_cb(struct bufferevent *bev, void *data)
{
//do something
}
void master_read_cb(struct bufferevent *bev, void *data)
{
//do something
}
问题是,我需要将void*数据放入一个结构中,同时添加一个新变量作为开始处理时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
}
这是完全错误的,因为我是如何传递函数的。如何以正确的方式执行此操作?您需要这样的操作,并将指向struct\u new\u数据的指针传递给它们:
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
}
只是从结构中传递数据成员?例如,结构新数据;in_read_cbu bev,data.data;如果需要更改结构的数据成员,即master\u read\u cbbev和您的\u struct\u instance->data,则传递一个void**。如果您只需要更改它指向的值,那么只需传递数据指针本身。哦,顺便说一下,不要使用带前导下划线的全局名称,这些名称由规范保留。@JoachimPileborg ok。谢谢你告诉我。我只是在以身作则。我需要传递结构的两个成员,因为master_read_cb需要检查start是1还是0。