2015-10-19 62 views
-1

B.A.T.M.A.N./A.L.F.R.E.D。 OpenMesh项目:void(* foo)(void):最新(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

@卡特彼勒,不,那是不一样的。这意味着'preamble'需要一些未定义的参数。 – kay

5

这意味着你声明一个没有参数的函数指针。这并不比这更复杂。它类同一样的东西: int main(void)int main()

两者是相同的。注意,尽管正如注释中所讨论的那样,如果您声明一个没有void关键字的函数指针,并且只有空括号,它会指定一个带有未定义参数的函数指针。

+0

@cad正确,我编辑了我的答案。谢谢! – Linus

相关问题