linux 的 list _x005F的实现有一些宏定义
#define LIST_HEAD_INIT(name) { &(name), &(name) }
#define LIST_HEAD(name) \
struct list_head name = LIST_HEAD_INIT(name)
#define INIT_LIST_HEAD(ptr) do { \
(ptr)->next = (ptr); (ptr)->prev = (ptr); \
} while (0)
#define list_entry(ptr, type, member) \
( (type *)( (char *)(ptr)-(unsigned long)(&( (type *) 0
)->member) ) )
LIST_HEAD(foo)
宏展开后结果是什么 ?
有下列代码,
#pragma pack(push)
#pragma pack(n)
struct Node {
uint16_t d0;
uint8_t d1;
uint16_t d2;
struct list_head list;
} ;
#pragma pack(pop)
请写出 `#pragma pack(n)` 中,当 n =1, 2, 8 时 `OFFSETOF(Node, list)`
在64位系统的结果