Я хочу создать структуру задачи, содержащую указатель функции на обратный вызов для выполнения указанной задачи. Задача содержит параметры, поэтому я хотел бы передать указатель "this/self" структуры на функцию исполнителя обратного вызова. Это создает циклические зависимости, и я копался в различных предварительных объявлениях и т. Д., Но, похоже, не могу понять это правильно. Я упускаю что-то, что делает это невозможным, или просто мое волшебство синтаксиса C ужасно слабое. Изменение задачи* на пустоту* похоже на читерство?
в задаче.ч:
// create a function pointer type signature for executing a task
typedef int (*executor) (task* self);
// create a task type
typedef struct {
executor exec; // the callback to execute the task
... // various data for the task
} task;