Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: void (* const USB_P_EP[16]) (DWORD event)
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
DVF
В данном листинге из примера 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),
};
Shamil
Цитата(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)};

Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.