Указатель функции - PullRequest
0 голосов
/ 16 июня 2010

Как этот указатель функции лучше, чем if-else или case switch? Это потому, что указатель на функцию помогает функциям обратного вызова и таким образом способствует асинхронной реализации?

Ответы [ 4 ]

2 голосов
/ 16 июня 2010

Это не "лучше", это другое. Да, основное назначение указателя на функцию - обеспечить функциональность обратного вызова. Нет, это не имеет прямого отношения к асинхронизму.

Проверьте эту статью для получения дополнительной информации о функциональных указателях.

2 голосов
/ 16 июня 2010

Лучше, если функции не известны заранее.Как бы вы разработали стандартную библиотеку C qsort() без использования указателя функции?

1 голос
/ 16 июня 2010

Функциональные указатели улучшают дизайн вашего кода. Рассмотрим, когда у вас есть возможность вызова одной функции из пятидесяти функций. Насколько массивным будет корпус коммутатора? Тем не менее, вы можете легко сопоставить все указатели функций по их идентификатору и вызвать соответствующую функцию из карты, используя «id». Код будет легко поддерживать и выглядеть аккуратно.

Существуют и другие преимущества и возможности использования указателя функции. Для хорошего объяснения посмотрите учебник здесь

1 голос
/ 16 июня 2010

По словам Найджела Джонса, это улучшает читаемость кода, среди прочего

http://embeddedgurus.com/stack-overflow/2010/04/efficient-c-tip-12-be-wary-of-switch-statements/

Он даже приводит несколько примеров:

http://www.rmbconsulting.us/Publications/jump-Tables.pdf

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...