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));

# 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) );})