реклама на сайте
подробности

 
 
> void (* const USB_P_EP[16]) (DWORD event), Требуется разъяснение (DWORD event)
DVF
сообщение Dec 22 2011, 13:54
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 630
Регистрация: 26-07-06
Из: Саратов
Пользователь №: 19 097



В данном листинге из примера USBHID не понятен смысл (DWORD event), скажем при вызове USB_P_EP[0](USB_EVT_SETUP); Если используется, то как?
CODE
usbcfg.h
#define USB_EP_EVENT 0x0005

usbuser.c
#define P_EP(n) ((USB_EP_EVENT & (1 << (n))) ? USB_EndPoint##n : NULL)

/* USB Endpoint Events Callback Pointers */
void (* const USB_P_EP[16]) (DWORD event) = {
P_EP(0),
P_EP(1),
P_EP(2),
P_EP(3),
P_EP(4),
P_EP(5),
P_EP(6),
P_EP(7),
P_EP(8),
P_EP(9),
P_EP(10),
P_EP(11),
P_EP(12),
P_EP(13),
P_EP(14),
P_EP(15),
};


Сообщение отредактировал IgorKossak - Dec 22 2011, 15:45
Причина редактирования: [codebox]
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Shamil
сообщение Dec 22 2011, 14:16
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 160
Регистрация: 23-12-04
Из: Уфа
Пользователь №: 1 631



Цитата(DVF @ Dec 22 2011, 19:54) *
не понятен смысл (DWORD event)

Это часть описания указателя на функцию.
Указывает, что определяется указатель на функцию с аргументом типа DWORD.

Цитата(DVF @ Dec 22 2011, 19:54) *
USB_P_EP[0](USB_EVT_SETUP);

Фактически будет вызвана функция: USB_EndPoint0(USB_EVT_SETUP);

Было бы понятней, если бы они сначала описали тип указателя на функцию:

typedef void (* const TUsbHandlerFunc) (DWORD event);

а уже потом сделали бы массив указателей на функции:

TUsbHandlerFunc USB_P_EP[16] = {P_EP(0), P_EP(1), ..., P_EP(14), P_EP(15)};

Go to the top of the page
 
+Quote Post

Сообщений в этой теме


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 20:11
Рейтинг@Mail.ru


Страница сгенерированна за 0.0135 секунд с 7
ELECTRONIX ©2004-2016