error: expected expression before 'struct'

list_entry(pos,struct _MAC_DATA,list);

编译时出现如下错误:
 error: expected expression before 'struct'
原因是:
#define list_entry(ptr, type, member) ({  
const typeof( ((type *)0)->member ) *__mptr = (ptr); 
(type *)( (char *)__mptr - offsetof(type,member) ); 
}) 
#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
此宏没有定义导致list_entry()调用失败!
解决方法:
包含头文件"unistd.h"即可。
其实真正声明offsetof()是在stddef.h头文件中。所以最好的方法是直接包含此头文件。
 
转自:http://blog.chinaunix.net/uid-28253945-id-3405862.html
原文地址:https://www.cnblogs.com/zzdbullet/p/10441943.html