Что означает -> в С?

Я понимаю что -> заменяет (*).element для структуры но, изучая чужой код зачастую вижу подобное обращение к функциям и тк в С нет классов это вызывает вопросы.

К примеру:

if (chan->write_packed_cell(chan, cell) < 0) {
    goto done;
}

-- вызвано внутри той же функции "write_packed_cell"

Извиняюсь за подобный вопрос относящийся больше к теории, но я не часто пишу на С и такое вижу в первые.


Ответы (1 шт):

Автор решения: Qwertiy

В структуру можно положить указатель на функцию. Но всё-таки вероятно, chan - тоже указатель, так что тут обычное разыменование и обращение:

(*chan).write_packed_cell(chan, cell)
→ Ссылка