【发布时间】:2014-10-30 19:25:42
【问题描述】:
如果我有:
struct my_container {
int x;
struct some_struct *ss;
}
如果我有指针 ss 可以通过它访问 some_struct 中的成员,我应该能够通过执行以下操作来访问 my_container 吗? 这就是我正在做的事情:
struct my_container *my_c;
my_c = container_of(&ss, struct my_container, ss)
但这肯定不起作用,我无法理解为什么。 有人可以帮我弄这个吗?有什么我想念的吗?
【问题讨论】:
-
你说的container_of()是什么意思,它是一个使用过的定义函数吗?
-
@Madan 它是 linux 内核中的一个宏,充当
offsetof的“逆” -
是 container_of 类似于 #define container_of(ptr, type, member) ((type *)((char *)(ptr)-(unsigned long)(&((type *)0)- >成员)))?
标签: c linux pointers struct kernel