|
Структура функций, В чём преимущество ? |
|
|
|
Feb 14 2014, 00:34
|
Частый гость
 
Группа: Участник
Сообщений: 91
Регистрация: 3-07-11
Пользователь №: 66 028

|
Здравствуйте, есть вот такая хитрая структура (тут мне не совсем понятно что делает union и зачем он там нужен) CODE typedef struct __WIZCHIP { uint16_t if_mode; ///< host interface mode uint8_t id[6]; ///< @b WIZCHIP ID such as @b 5100, @b 5200, @b 5500, and so on. /** * The set of critical section callback func. */ struct _CRIS { void (*_enter) (void); ///< crtical section enter void (*_exit) (void); ///< critial section exit }CRIS; /** * The set of @ref\_WIZCHIP_ select control callback func. */ struct _CS { void (*_select) (void); ///< @ref \_WIZCHIP_ selected void (*_deselect)(void); ///< @ref \_WIZCHIP_ deselected }CS; /** * The set of interface IO callback func. */ union _IF { /** * For BUS interface IO */ struct { uint8_t (*_read_byte) (uint32_t AddrSel); void (*_write_byte) (uint32_t AddrSel, uint8_t wb); }BUS; /** * For SPI interface IO */ struct { uint8_t (*_read_byte) (void); void (*_write_byte) (uint8_t wb); }SPI; // To be added // }IF; }_WIZCHIP;
Заполнение её (.if_mode .id и др указывают место расположение ? т.е при таком подходе можно их местами менять ? ) Код _WIZCHIP WIZCHIP = { .id = _WIZCHIP_ID_, .if_mode = _WIZCHIP_IO_MODE_, .CRIS._enter = wizchip_cris_enter, .CRIS._exit = wizchip_cris_exit, .CS._select = wizchip_cs_select, .CS._deselect = wizchip_cs_deselect, .IF.BUS._read_byte = wizchip_bus_readbyte, .IF.BUS._write_byte = wizchip_bus_writebyte // .IF.SPI._read_byte = wizchip_spi_readbyte, // .IF.SPI._write_byte = wizchip_spi_writebyte }; Работа с ней выглядит так Код WIZCHIP.CS._select(); т.е получается просто вызывается функция wizchip_cs_select() Так вот чём преимущество такого подхода WIZCHIP.CS._select(); по сравнению с просто вызовом функции wizchip_cs_select(); ? И на сколько дольше выполняется первый метод по сравнению со вторым?
|
|
|
|
|
 |
Ответов
|
May 5 2014, 21:59
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(ViKo @ May 6 2014, 02:31)  А разве может быть иное? Да. Функция может не вызывать переданный ей параметр-функцию в процессе своей работы  Может просто сохранить в переменной, например. Или возвращать адрес функции-параметра. Цитата(GetSmart @ May 6 2014, 02:37)  Неубедительно. Вы не согласны с тем, что параметр функции qsort() является callback-ом? Так это не я придумал, это общепринято. То, что вы с A. Fig Lee считаете callback'ом - это асинхронный callback, частный случай callback'а. Вот вам, например, статья про сравнение асинхронных и синхронных callback'ов. Там есть и определения для этих двух вариантов. Цитата(GetSmart @ May 6 2014, 02:37)  Всё-таки где отличия от параметра-функции или это 100% аналог? Вот выше я привёл два примера функции-параметра, не являющихся callback'ами. Но обычно эти понятия синонимы.
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
May 5 2014, 22:48
|

Знающий
   
Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467

|
Цитата(AHTOXA @ May 5 2014, 16:59)  Вы не согласны с тем, что параметр функции qsort() является callback-ом? Так это не я придумал, это общепринято. CC2520 не является Zigbee трансивером, но в мануале она так обзывается. Если нет факта callbacka, значит это не callback. qsort, это ни какой ни бэк, это последовательная енумерация. Без всяких коллов и бэков.
--------------------
Верить нельзя никому, даже себе. Мне - можно.
|
|
|
|
|
May 7 2014, 10:53
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(A. Fig Lee @ May 6 2014, 04:48)  Если нет факта callbacka, значит это не callback. Голосуем. Кто за этот вариант?  А то чёткость признаков отсутствует. Цитата(amaora @ May 7 2014, 11:21)  Файловая система например обычно на уровень выше драйвера устройства хранения. Драйвер устройства хранения вызывает функции файловой системы?
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
Сообщений в этой теме
pokk Структура функций Feb 14 2014, 00:34 smalcom >> т.е при таком подходе можно их местами ме... Feb 14 2014, 10:16 _Pasha Цитата(pokk @ Feb 14 2014, 04:34) Так вот... Feb 14 2014, 13:57 ar__systems Цитата(_Pasha @ Feb 14 2014, 08:57) Код с... Feb 17 2014, 16:36 AlexandrY Цитата(pokk @ Feb 14 2014, 02:34) т.е пол... Feb 14 2014, 14:14 pokk Спасибо за помощь. Я примерно так и думал только г... Feb 17 2014, 07:14 ViKo Что такое callback функция? И в Википедии читал, и... May 3 2014, 09:31 aaarrr Цитата(ViKo @ May 3 2014, 13:31) Что тако... May 3 2014, 09:54  ViKo Цитата(aaarrr @ May 3 2014, 12:54) Это фу... May 3 2014, 10:07 doom13 Цитата(ViKo @ May 3 2014, 12:31) Что тако... May 3 2014, 10:41 aaarrr "передача исполняемого кода в качестве одного... May 3 2014, 10:29 ViKo Цитата(aaarrr @ May 3 2014, 13:29) Хорошо... May 3 2014, 10:50  aaarrr Цитата(ViKo @ May 3 2014, 14:50) В том и ... May 3 2014, 11:08  A. Fig Lee Цитата(ViKo @ May 3 2014, 05:50) В том и ... May 3 2014, 19:47   ViKo Цитата(A. Fig Lee @ May 3 2014, 22:47) Не... May 3 2014, 22:01    A. Fig Lee Цитата(ViKo @ May 3 2014, 17:01) Обратно ... May 3 2014, 23:10 amaora Цитата(aaarrr @ May 3 2014, 14:29) Хорошо... May 5 2014, 18:22  ViKo Цитата(amaora @ May 5 2014, 21:22) Если г... May 5 2014, 19:48   amaora Цитата(ViKo @ May 5 2014, 23:48) А если у... May 7 2014, 05:21 Lagman Callback функции часто встречаются в API библиотек... May 3 2014, 10:46 ViKo Handshake? По-моему, вы спекулянт (понятиями). May 4 2014, 06:13 AHTOXA По-моему, callback - это просто.
Например, есть фу... May 4 2014, 06:29  A. Fig Lee Цитата(AHTOXA @ May 4 2014, 01:29) По-мое... May 4 2014, 13:01   AHTOXA Цитата(A. Fig Lee @ May 4 2014, 19:01) не... May 4 2014, 13:09    A. Fig Lee Цитата(AHTOXA @ May 4 2014, 08:09) Вы что... May 4 2014, 15:10     AHTOXA Цитата(A. Fig Lee @ May 4 2014, 21:10) Не... May 4 2014, 16:56      A. Fig Lee Цитата(AHTOXA @ May 4 2014, 11:56) Ага. Б... May 4 2014, 18:36 ViKo Что есть "обратный вызов"? По-моему, это... May 4 2014, 18:19 Tiro Цитата(ViKo @ May 4 2014, 21:19) Что есть... May 4 2014, 18:58 AHTOXA Цитата(ViKo @ May 5 2014, 00:19) Что есть... May 4 2014, 18:43 ViKo Цитата(AHTOXA @ May 4 2014, 21:43) Нормал... May 4 2014, 18:55  AHTOXA Цитата(ViKo @ May 5 2014, 00:55) По-вашем... May 4 2014, 19:48   GetSmart Цитата(AHTOXA @ May 5 2014, 01:48) Что ка... May 5 2014, 19:22 A. Fig Lee Цитата(AHTOXA @ May 4 2014, 13:43) Ну хва... May 4 2014, 23:54  AHTOXA Цитата(A. Fig Lee @ May 5 2014, 05:54) Ca... May 5 2014, 05:26   A. Fig Lee Цитата(AHTOXA @ May 5 2014, 00:26) Неверн... May 5 2014, 12:45    AHTOXA Цитата(A. Fig Lee @ May 5 2014, 18:45) Не... May 5 2014, 16:58     A. Fig Lee Цитата(AHTOXA @ May 5 2014, 11:58) Если е... May 5 2014, 19:35 ViKo То есть, события, асинхронность - не при чем? Прос... May 4 2014, 19:06 Tiro Цитата(ViKo @ May 4 2014, 22:06) То есть,... May 4 2014, 19:10  ViKo Цитата(Tiro @ May 4 2014, 22:10) Вот у Ва... May 4 2014, 19:17   Tiro Цитата(ViKo @ May 4 2014, 22:17) Возникло... May 4 2014, 19:38 XVR 2 ТС - вы смешали в одну кучу назначение callback... May 5 2014, 11:38 ViKo Цитата(XVR @ May 5 2014, 14:38) 2 ТС - вы... May 5 2014, 12:12  XVR Цитата(ViKo @ May 5 2014, 16:12) Дайте уж... May 5 2014, 13:39 ViKo Из словаря. Не обязательно обратный вызов. May 5 2014, 13:56 A. Fig Lee Цитата(ViKo @ May 5 2014, 08:56) Из слова... May 5 2014, 15:42 XVR Если из 'словаря', то это вариант 'д... May 5 2014, 14:14 ViKo Цитата(XVR @ May 5 2014, 17:14) Если из ... May 5 2014, 18:00  XVR Цитата(ViKo @ May 5 2014, 22:00) А мне по... May 6 2014, 07:30 AHTOXA Цитата(GetSmart @ May 6 2014, 01:22) А чт... May 5 2014, 20:24 ViKo Цитата(AHTOXA @ May 5 2014, 23:24) Это та... May 5 2014, 20:31 GetSmart Цитата(AHTOXA @ May 6 2014, 02:24) Это не... May 5 2014, 20:37    GetSmart Цитата(AHTOXA @ May 7 2014, 17:40) Да, эт... May 7 2014, 13:17     AHTOXA Цитата(GetSmart @ May 7 2014, 19:17) Как ... May 7 2014, 18:28      ViKo Цитата(AHTOXA @ May 7 2014, 21:28) Это по... May 7 2014, 18:37       AHTOXA Цитата(ViKo @ May 8 2014, 00:37) Переведи... May 7 2014, 19:16        ViKo Цитата(AHTOXA @ May 7 2014, 22:16) Второй... May 7 2014, 20:11        A. Fig Lee Цитата(AHTOXA @ May 7 2014, 14:16) Очень ... May 7 2014, 22:16      GetSmart Цитата(AHTOXA @ May 8 2014, 00:28) Мне не... May 8 2014, 02:40      dxp QUOTE (AHTOXA @ May 8 2014, 01:28) Поняти... May 10 2014, 14:40   A. Fig Lee Цитата(GetSmart @ May 7 2014, 05:53) Голо... May 7 2014, 13:30    GetSmart Цитата(A. Fig Lee @ May 7 2014, 19:30) Вс... May 7 2014, 13:40   amaora Цитата(GetSmart @ May 7 2014, 14:53) Драй... May 7 2014, 16:39 AHTOXA Цитата(ViKo @ May 8 2014, 02:11) Первый в... May 8 2014, 08:08
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|