int указатель на два указателя структуры? - PullRequest
0 голосов
/ 05 ноября 2018

Это из файлов сборки linux <linux/usb/serial.h>:

int (*calc_num_ports)(struct usb_serial *serial, struct usb_serial_endpoints *epds);

У меня просто небольшие проблемы с пониманием, что здесь происходит. Int указатель на два указателя структуры? Как это работает?

1 Ответ

0 голосов
/ 05 ноября 2018

В заголовке говорится, что это такое и для чего оно используется (<linux/usb/serial.h>):

@calc_num_ports: pointer to a function to determine how many ports this
 *  device has dynamically. It can also be used to verify the number of
 *  endpoints or to modify the port-endpoint mapping. It will be called
 *  after the probe() callback is called, but before attach().

Синтаксис для указателя функции не очень интуитивно понятен. Учтите следующее:

int *calc_num_ports(struct usb_serial *serial, struct usb_serial_endpoints *epds);
int (*calc_num_ports)(struct usb_serial *serial, struct usb_serial_endpoints *epds);

Первый - это прототип функции с именем calc_num_ports, которая принимает два аргумента: struct usb_serial * и struct usb_serial_endpoints * и return s и int *.

Второй тип переменной, для которой требуется адрес функции, которая принимает два аргумента: struct usb_serial * и struct usb_serial_endpoints * и return s и int.

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