2015-10-19 3 views
-1

B.A.T.M.A.N./A.L.F.R.E.D. Проект OpenMesh:void (* foo) (void): значение последнего (пусто)

function read_answer инициализирует указатель на тип struct vis_print_ops, который определен

struct vis_print_ops 
{ 
    void (*preamble)(void); 
    void (*interfaces)(uint8_t iface_n, struct vis_iface *ifaces); 
    void (*entries)(uint8_t entries_n, struct vis_entry *vis_entries, 
      uint8_t iface_n, struct vis_iface *ifaces); 
    void (*postamble)(void); 
}; 

Теперь посмотрим на

void (*preamble)(void) 

могли бы вы сказать мне, что смысл последнего (пустоты) ? Не является

void (*preamble) 

достаточно?

+4

Это очень важно, что это указатель на функцию без параметров. – Linus

ответ

5

Последнее void означает, что в функции нет аргументов, которые будут указаны preamble.

void (*preamble) недостаточно, потому что это только указатель на void, тогда как void (*preamble)(void) - это указатель на функцию.

+1

Будет ли void (* preamble)() 'быть в порядке? –

+3

@ Caterpillar, нет, это не то же самое. Это означает, что 'преамбула' принимает некоторые неопределенные аргументы. – kay

5

Это означает, что вы объявляете указатель на функцию без параметров. Это не сложнее. Это похоже на что-то вроде: int main(void) и int main()

Оба одинаков. Будьте осторожны, хотя, как описано в комментариях, если вы объявляете указатель на функцию без ключевого слова void и только в пустых скобках задает указатель на функцию с неопределенными аргументами.

+0

@cad Правильно, я отредактировал свой ответ. Благодаря! – Linus

Смежные вопросы