【发布时间】:2019-09-16 04:44:54
【问题描述】:
我最近在 C 程序中遇到了一个奇怪的语法。
struct connector_agent_api{
bool (*receive)(slot *s, uint8_t *data, uint8_t length);
}
“接收”是一个函数指针吗?
如果它是一个函数指针,为什么它有命名参数?是不是应该像下面这样?
bool (*receive)(slot *, uint8_t *, uint8_t);
它确实被编译并在一个库中使用。我在互联网上搜索了很多,并试图证明这种语法是合理的。我还是不知道为什么这个东西可以编译... :(
【问题讨论】:
-
这些名称仅用于自我说明,对功能没有任何意义。
-
注意这很像头文件中的函数声明,其中参数名称是可选的,对生成的程序没有影响。
-
@EugeneSh。与任何其他不是定义的函数声明相同。