ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
19 апреля
1023645 Топик полностью
RxTx (03.08.2020 17:27, просмотров: 453) ответил Argon на Кто-нить "на пальцах" сможет объяснить суть callback функций (обратного вызова) ?
Рассмотри как работает qsort() https://en.cppreference.com/w/c/algorithm/qsort

Функция qsort() ничего не знает как и что ей сравнивать (это могут быть и int числа, и float числа так и произвольные структуры например).

Сравнение производит не она, сравнение проводишь ты, написав свою функцию.

Ты передаёшь в функцию qsort, вызвав её алгоритм указатель на написанную тобой функцию сравнения.

И qsort при своей работе часто вызывает написанную тобой функцию сравнения.

Это и есть callback. Функция qsort осуществляет callback.


Колбэки используются при работе с операционными системами или закрытыми чужими библиотеками.

Например так работает таймер операционной системы. Вначале ты вызываешь функцию SetTimer (или там CreateTimer)

передавая ей указатель на свою функцию таймера, которую нужно "дёргать".

А потом операционка сама начинает "дёргать", вызывая твою функцию, адрес которой ты ей передал. Этим она осуществляет callback.


Либо Callback'и используются при грамотно построенном коде, который не надо каждый раз переписывать.

В завуалированной форме это часто используется в ООП.