Мне нужно написать код C, используя libevent. Вкратце, что я ожидаю сделать. Из stdin персонаж будет проходить через in_read_cb
. in_read_cb
будет отправлен на адрес master_read_cb
. master_read_cb
будет отправлен в систему для обработки. Эти 2 функции устанавливаются 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
}
Это совершенно неправильно из-за того, как я проходил функцию. Как я могу сделать это правильно?
Просто передать 'data' элемент из структуры? Например. 'struct _new_data данные; in_read_cb (you_bev, data.data); ' –
Вы передаете' void ** ', если вам нужно изменить элемент' data' структуры, т. е. 'master_read_cb (bev, & your_struct_instance-> data)'. Если вам нужно только изменить значение, то оно * указывает *, а затем просто передать указатель 'data'. –
О, кстати, не имеют глобальных имен с ведущими подчеркиваниями, которые зарезервированы спецификацией. –