nmvbxcz 2016-12-08 09:32 采纳率: 0%
浏览 951

C语言程序container_of问题

#include
#include
#include
typedef struct
{
int num;
char a;
}node;

void main()
{
node* p = (node*)malloc(sizeof(node));
p->num = 1;
p->a = 'a';
printf("offsetof:%lu\n",offsetof(node,num));
printf("addr:%lu\n",p);
printf("containerof:%lu\n",container_of(&(p->a), node, a));
}

编译时expected expression before ‘node’ printf("containerof:%lu\n",container_of(&(p->a), node, a));

  • 写回答

1条回答 默认 最新

  • KoalaZB 2016-12-08 11:41
    关注

    # container_of 是定义在Linux内核includelinux/kernel.h里面的 _
    要使用得加上下面这一段

     #define container_of(ptr, type, member) ({                      \
            const typeof( ((type *)0)->member ) *__mptr = (ptr);    \
            (type *)( (char *)__mptr - offsetof(type,member) );})
    
    评论

报告相同问题?