#define adgMEMBEROFFSET(structure, member) \
(int) (&(((structure *)0)->member))
请问(structure*)0 是什么意思 为什么structure后用0
// Macros to compute the size and offset of structure members
#define adgMEMBEROFFSET(structure, member) \
(int) (&(((structure *)0)->member))
// Macros to compute offsets and get/set window values based on the layout of
// a structure.
#define adgSETWINDOWWORD(hwnd, structure, member, value) \
SetWindowWord(hwnd, adgMEMBEROFFSET(structure, member), (WORD) (value))
#define adgSETWINDOWLONG(hwnd, structure, member, value) \
SetWindowLong(hwnd, adgMEMBEROFFSET(structure, member), (LONG) (value))
#define adgGETWINDOWWORD(hwnd, structure, member) \
GetWindowWord(hwnd, adgMEMBEROFFSET(structure, member))
#define adgGETWINDOWLONG(hwnd, structure, member) \
GetWindowLong(hwnd, adgMEMBEROFFSET(structure, member))
(int) (&(((structure *)0)->member))
请问(structure*)0 是什么意思 为什么structure后用0
// Macros to compute the size and offset of structure members
#define adgMEMBEROFFSET(structure, member) \
(int) (&(((structure *)0)->member))
// Macros to compute offsets and get/set window values based on the layout of
// a structure.
#define adgSETWINDOWWORD(hwnd, structure, member, value) \
SetWindowWord(hwnd, adgMEMBEROFFSET(structure, member), (WORD) (value))
#define adgSETWINDOWLONG(hwnd, structure, member, value) \
SetWindowLong(hwnd, adgMEMBEROFFSET(structure, member), (LONG) (value))
#define adgGETWINDOWWORD(hwnd, structure, member) \
GetWindowWord(hwnd, adgMEMBEROFFSET(structure, member))
#define adgGETWINDOWLONG(hwnd, structure, member) \
GetWindowLong(hwnd, adgMEMBEROFFSET(structure, member))
(int) (&(((structure *)0)->member))
建立一个此结构的虚的空指针,然后再取出此结构成员的地址,不就是此成员的变量相对于此结构的偏移吗!