gpt4 book ai didi

c - 不确定我理解这一行 : "struct x {void (*y)(struct x *z);}"

转载 作者:行者123 更新时间:2023-11-30 18:38:31 24 4
gpt4 key购买 nike

我正在查看一个简单的 USB 驱动程序的代码,我发现了一行我不太理解的内容:

struct UsbDevice
{
...
void (*DeviceDetached)(struct UsbDevice *device) __attribute__((aligned(4)));
...
};

这里到底发生了什么?这种括号的使用(...为 *device 分配一个新名称?)和“void”的使用对我来说都是新的。 (而且自引用结构也很奇怪。)

最佳答案

这声明了一个名为DeviceDetached的函数指针,它返回void并接受一个指向struct UsbDevice的指针。 __attribute__((aligned(4))) 强制在四字节边界上对齐。您可以使用 C11 _Alignas

参见What is the meaning of "__attribute__((packed, aligned(4))) "有关__attribute((aligned(4))的更多信息。

关于c - 不确定我理解这一行 : "struct x {void (*y)(struct x *z);}",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33714783/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com