Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 29, средняя оценка - 4.72
mifody
0 / 0 / 0
Регистрация: 16.05.2009
Сообщений: 26
#1

Что такое CALLBACK функция...... - C++

14.06.2009, 20:35. Просмотров 3782. Ответов 4
Метки нет (Все метки)

Что такое CALLBACK функция......
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.06.2009, 20:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Что такое CALLBACK функция...... (C++):

Что такое виртуальная функция и зачем она нужна? - C++
Мне с трудом пришлось понять, пока не прочитал книгу и не проработал код на виртуальных функциях. В этой теме хочу новичкам рассказать,...

Что такое файловый буфер? Что такое режим (модификатор) доступа, при работе с файлами? - C++
Что такое файловый буфер? Что такое режим (модификатор) доступа, при работе с файлами?

Что такое рекурсивный тип данных? Что такое конструкция рекурсивного типа? - C++
Что такое рекурсивный тип данных? Что такое конструкция рекурсивного типа?

Callback функция - C++
Простой вопрос: я правильно понял, сallback-функцией просто называется функция, к которой обращаются по указателю(обычно указатель на нее...

Что такое хэндлер файла? Что такое файловый указатель? - C++
Что такое хэндлер файла? Что такое файловый указатель?

Что такое заголовочный файл? Что такое файл исходного кода? Рассмотрите назначение каждого из них - C++
Что такое заголовочный файл? Что такое файл исходного кода? Рассмотрите назначение каждого из них пожалуйста.

4
bazile
62 / 38 / 20
Регистрация: 15.03.2007
Сообщений: 6,910
15.06.2009, 14:19 #2
Дословно это 'функция обратного вызова'. Часто используется для извещения программы о наступлении какого-либо события, например, завершения асинхронной операции ввода/вывода. Еще одна область применения это совместная обработка данных 'внешней функцией' (функция WinAPI, run-time библиотеки C/C++) и функцией в твоей программе. Самый простой пример - сортировка массива с помощью функции qsort. qsort реализует общий алгоритм быстрой сортировки, а от программиста требуется предоставить функцию сравнения элементов массива.
0
KhasDenis
0 / 0 / 0
Регистрация: 15.07.2008
Сообщений: 173
25.06.2009, 21:54 #3
а чуть подробней ...
0
KhasDenis
0 / 0 / 0
Регистрация: 15.07.2008
Сообщений: 173
28.06.2009, 13:15 #4
Создаю я обьект, передаю его конструктору другого обьекта.
Теперь по определенным событиям во втором обьекте, он будет вызывать
функции/методы первого обьекта. Методы первого обьекта стали колбэк
функциями(так?), но на этапе проектирования первого класса/обьекта я может быть и не подозревал о необходимости подобного использования его методов, т.е. создавал их просто как методы.
Зачем получается нужен этот модификатор CALLBACK, и как быть в ситуации когда при создании метода я еще не знаю будет он колбек или не будет ?
В ява нет такого понятия как колбэк функции,а то что они позволяют делать можно выполнить обычными функциями. Помоему так.
0
krandv
0 / 0 / 0
Регистрация: 20.06.2009
Сообщений: 13
02.07.2009, 02:06 #5
Если ты разработал класс таким образом, что в случае CALLBACKа его методы нельзя использовать, то ты неправильно класс разработал.
Поясняю пример callback для функции qsort. Эта функция может сортировать любые данные - строки, дробные, целые, классы, структуры и т.д. Но сама эта функция не знает и не может знать как отсортировать например массив структур, созданных пользователем. Поэтому в качестве одного из параметров qsort передается указатель на функцию, которая будет выполнять сравнение 2х структур и говорить какая из них должна быть на первом месте, а какая на втором. Эту функцию должен написать программер, который знает что за структуры он сортирует и знает правила, по которым они должны сортироваться.
Таким образом это - callback функция. qsort ее вызывает (call), а она возвращает (back) результат.
Еще один пример callback - это использование MFC класса CListCtrl (список). Для него можно выставлять параметр, чтобы он не хранил значения элементов в себе а посылал месагу родительскому окну. В ответ на эту месагу родительское окно должно отдавать данные, которые будут выводиться на экран. В данном случае месага есть пример callback. Т.е окно посылает (call) месагу, а в ответ (back) приходят данные.
Если говорить в общем, то callback - это нарушение прямолинейного выполнения программы. Т.е. функции вызываются не из главного цикла и не в тот момент, когда этого хочет программа, а в тот момент, когда этого хочет функция (или другой процесс), с которой мы установили отношения. Система месаг винды в общем то ярчайший пример использования callback'ов.
0
02.07.2009, 02:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.07.2009, 02:06
Привет! Вот еще темы с ответами:

For_each и аргументы callback-функции; Как передать callback'у больше одного аргумента - C++
Изучаю контейнеры и алгоритмы stl по Майерсу . С непривычки слегка охренел и запутался в них . В общем есть у меня простой вызов...

callback функция - C++
Здраствуйте!!! Занимаюсь разработкой снифера под DVB-карту. Пытаюсь получить MPEG-поток. Проблема заключается в том, что необходимо...

Объяснить что такое "раздельная компиляция", что такое "интерфейс класса" и "реализация класса" на примере - C++
Есть класс, содержащий объекты и конструктор. Конструктор объявляется в одном из cpp файлов(их несколько). Можно ли, как-то, использовать...

Что такое перегрузка оператора? Что у меня в коде за ошибка? - C++
Что же я написал?? Что оно не компилится? Что значит error C2275: Superclass: недопустимое использование этого типа в качестве выражения ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru