首先,我不是 C 专家,但我认为我能够分解 C 代码。我目前正在阅读一些开源存储库,但不知道头文件中某些结构中的以下语句意味着什么:
struct some_struct{
...
/* Callback when non-reply message comes in (inside db transaction) */
void (*billboardcb)(void *channel, bool perm, const char *happenings);
...
}
我认为函数不能像结构中的方法一样声明。但如果这是一个变量(称为 billboardcb),为什么会有所有这些参数?我在此代码库中没有找到名为 billboardcb 的宏。
最佳答案
一个function pointer是一个存储函数地址的指针。函数指针可以像任何其他指针一样存在于结构内部。 void (*billboardcb)
之后列出的 (void *channel, bool perm, const char *happenings)
参数是函数的参数。 (*billboardcb)
指针前面的 void
表示该函数不返回任何内容。
如果您搜索 some_struct
结构体的实例化位置,您可能会找到分配给该指针的实际函数。分配给指针的函数将像任何其他函数一样进行声明,然后通过将函数的内存地址分配给结构体的指针来将其地址存储在结构体中。
关于c - 奇怪的 C 语句作为结构中的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51542640/