Задать вопрос
hitakiri
@hitakiri

Заченм в Си используют констукцию void(*funk)(struct my_struct*, my_struct2) как элемент структуры?

Вопрос возник при изучении библиотеки Nuklear. Для каждого (почти) виджета, в данной библиотеке есть элементы структуры:
void(*draw_begin)(struct nk_command_buffer*, nk_handle);
void(*draw_end)(struct nk_command_buffer*, nk_handle);


Эти элементы используются при отрисовке того или иного виджета:
//* draw progressbar */
if (style->draw_begin) style->draw_begin(out, style->userdata);
nk_draw_progress(out, *state, style, &bounds, &cursor, value, max);
if (style->draw_end) style->draw_end(out, style->userdata);


Так вот вопрос: Как собственно это работает и что это вообще (как это называется и где про такое почитать)?
Объявления у функций draw_begin\draw_end нет.
Это не коллбек ( нет указателя на какую либо функцию ).
Как при возврате void оно отрабатывает в операторе if ?
  • Вопрос задан
  • 64 просмотра
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
IvanU7n
@IvanU7n
nothing interesting here
это указатель на функцию, если он не равен null, то вызывается

т.е. в
void(*draw_begin)(struct nk_command_buffer*, nk_handle);

переменная draw_begin — указатель на функцию типа void(struct nk_command_buffer*, nk_handle)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы