以下宏函数是ptr指向一个结构体的某一成员,member是这个成员的名字,type是它的类型,这个函数是获得ptr指向的成员所在结构体的首地址
想问一下这个ptr给null是不是函数就会出现错误?我定义了Null是0,感觉ptr给了Null这个函数返回值应该是个负数,但是测试时候好像又没有发现有问题。如果没问题的话那这个宏函数是如何处理ptr为空指针的情况呢?
#define container_of(ptr,type,member) \
({ \
typeof(((type *)0)->member) * p = (ptr); \
(type *)((unsigned long)p - (unsigned long)&(((type *)0)->member)); \
})