Структура box
определена в box.h
следующим образом:
typedef struct box {
int (*func1) (const void *p1, const void *p2);
void (*func2) (void *p3);
} Box;
box.c
включает в себя box.h
и имеет следующую функцию:
int create_box(int (*func1)(const void *p1, const void *p2), void (*func2)(const void *p3), Box **box) {
create_box
вызывается для инициализации блока на основе предоставленных параметров.Я изо всех сил пытаюсь выяснить, как назначить указатели на поля структуры.Во-первых, я начинаю с выделения памяти для **box
через (*box) = malloc(sizeof(Box));
Но затем я пытаюсь назначить аргументы указателя функции через
(*box)->func1 = (func1)(&p1, &p2);
(*box)->func2 = (func2)(&p3);
Выполнение этого говорит мне, что всеиз моих указателей не объявлены.Очевидно, что я неправильно понимаю, как работают указатели на функции, но я не понимаю, как я должен их инициализировать (если это слово записи).Я пытался заменить правую сторону на (*func1)(*p1, *p2)
, (func1)(p1, p2)
, (*func1)(p1, p2)
, (*func1)(&p1, &p2)
и т. Д., Но они не дали ничего, что я могу понять.Как правильно инициализировать указатели функций этой структуры?
Я работаю в C90, если это актуально.