void(*foo)(void):最新的含义(void)

Ger*_*llo -2 c void

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)

足够?

Mik*_*CAT 5

最后一个void意味着函数中没有参数将被指向preamble.

void (*preamble)是不够的,因为这只是一个指向void的指针,而是void (*preamble)(void)一个函数指针.

  • @Caterpillar,不,那不一样.这意味着`preamble`需要一些未定义的参数. (3认同)

Lin*_*nus 5

这意味着您声明一个没有参数的函数指针.它并不复杂.它类似于: int main(void)int main()

两者都是一样的.但是请注意,如评论中所讨论的,如果声明一个没有void关键字的函数指针,只有空括号,它指定一个带有未定义参数的函数指针.