Zuc*_*eis 16 c pointers function
我最近在C程序中遇到了一个奇怪的语法。
struct connector_agent_api{
bool (*receive)(slot *s, uint8_t *data, uint8_t length);
}
Run Code Online (Sandbox Code Playgroud)
“接收”是一个函数指针吗?
如果它是一个函数指针,为什么它有命名参数?应该是下面的样子吗?
bool (*receive)(slot *, uint8_t *, uint8_t);
Run Code Online (Sandbox Code Playgroud)
它当然可以编译并在库中使用。我在互联网上进行了大量搜索,并试图证明这种语法的合理性。我仍然不知道为什么这个东西可以编译... :(
是什么让您认为这是一个奇怪的语法?这是符合 C 标准的有效声明。参数的命名事实是无关紧要的。在这种情况下,此类参数的命名是可选的。如果您或其他人使用 IDE,它会非常有帮助,因为它可以在使用函数指针调用函数时显示完整的原型,从而向编码人员提供有关要提供的参数的提示。