Структурная нотация - PullRequest
       7

Структурная нотация

0 голосов
/ 07 марта 2012

Мне нужно уточнить следующие обозначения в C:

У меня есть структура, и в этой структуре у меня есть следующее поле:

bool (* process_builtin)(struct esh_command *);

Iя довольно запутался здесь .. Так что это логическое поле .. Что именно process_builtin?У меня уже есть определенная структура esh_command, но я понятия не имею, где это играет в этой области.Может кто-нибудь объяснить, в чем смысл всего этого?

Ответы [ 4 ]

2 голосов
/ 07 марта 2012

Это указатель на функцию .Использование cdecl (и изменение bool на int) показывает:

declare process_builtin as pointer to function (pointer to struct esh_command) returning int

Эта ссылка является постоянной ссылкой на весь вывод.

2 голосов
/ 07 марта 2012

Это не логическое поле, это указатель на функцию , принимающий struct esh_command* и возвращающий bool;поле называется process_builtin.

Вы также можете написать:

typedef bool (* process_builtin_t)(struct esh_command *);

, в этом случае process_builtin_t будет типом, и в этом случае вы можете написать определение этого struct участник как:

process_builtin_t process_builtin;
1 голос
/ 07 марта 2012

process_builtin - указатель на функцию. Функция, на которую она указывает, принимает esh_command* в качестве параметра и возвращает bool.

0 голосов
/ 07 марта 2012

Это указатель на функцию, которая принимает указатель на struct esh_command в качестве аргумента и возвращает значение bool.

http://www.cprogramming.com/tutorial/function-pointers.html

...