c - 下面的宏是做什么的?

标签 c qemu

在 qemu 源代码中,我有以下名为 offsetof 的宏。谁能告诉我它的作用?

#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *) 0)->MEMBER)

它以这种方式使用:

offsetof(CPUState, icount_decr.u32)

其中 CPUState 是一个结构。

我认为它给出了成员在结构内的偏移量,但我不确定。

编辑:是的,我发现发生了什么。 CPUState 的定义里面有一个宏,我错过了,其中包括变量 icount_decr。

最佳答案

它获取结构成员的偏移量。它通过将地址零转换为该类型的结构然后获取成员的地址来实现。

关于c - 下面的宏是做什么的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3453063/

相关文章:

c - 我认为 sizeof 的参数是针对可变长度数组求值的

gdb - 使用 gdbserver 和 qemu 进行调试,如何在控制寄存器 cr3 上设置观察点

交叉编译的 C Windows libcurl 在 Ubuntu 上没有正确链接

c - 我不知道如何在 C 语言的 main 之外编写,你能告诉我我做错了什么吗?

linux - 如何安装qemu补丁版?

linux - 在kgdb中,我无法设置断点

qemu - 对模拟代码中字节顺序的重要性非常困惑

virtualization - 在 SR-IOV 虚拟功能 (VF) NIC 之间转发数据包

c - 提供特定值但返回错误指针

c++ - OpenGL重启场景