BATMAN/ALFRED OpenMesh项目:
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);
};
Run Code Online (Sandbox Code Playgroud)
现在看看
void (*preamble)(void)
Run Code Online (Sandbox Code Playgroud)
你能告诉我最后一个(无效)是什么意思吗?是不是
void (*preamble)
Run Code Online (Sandbox Code Playgroud)
足够?
最后一个void意味着函数中没有参数将被指向preamble.
void (*preamble)是不够的,因为这只是一个指向void的指针,而是void (*preamble)(void)一个函数指针.
这意味着您声明一个没有参数的函数指针.它并不复杂.它类似于:
int main(void)
和
int main()
两者都是一样的.但是请注意,如评论中所讨论的,如果声明一个没有void关键字的函数指针,只有空括号,它指定一个带有未定义参数的函数指针.