|
请做EFI的大侠&前辈指点一下,红色标记的那个宏怎么解释?
2 \" z) l5 u9 F' `% ^我调试发现他是取得那个字段的地址。' N5 n4 z) T- F! A1 I
大侠能详细解释一下吗?7 p6 h- s" e$ K1 b! S3 [; j
: |+ b7 \9 Y( q1 M2 l这段是我Debug的用例。. h& z. S. |0 e! V+ o& n p
9 J5 t. w; H/ [ a( b6 y5 U o#include "stdio.h"( F: D( s$ Y) b1 g! U: W/ ~
#include "stdlib.h"
- Z( c1 v# t7 G! e/ O#include "string.h"2 ~3 }7 ]$ n: L& M
- o$ Z) v$ [( Z) ^; h; M#define CHAR8 unsigned char
5 ]3 {7 Q/ d2 z( t( W T( ]+ z9 J$ w/ b$ R1 G3 D1 I" C
typedef struct _tagjany
% N9 @5 _& E* f9 r( P/ H{! k" S9 D1 I- ?7 E
char name[8];' Z: d2 r; A3 x# B; _8 f
int age;
# s& }7 q3 r" q: Q6 S}JANY, *PJANY; ~* q+ E" _% s6 K" }
, x( ~/ y+ m% B; j8 X1 l6 m
typedef struct _tagowen
( o ?9 m1 B" [7 C9 O& n, b5 ?$ W# t{6 p3 i; `5 x9 M2 u9 Z
JANY jy;; `- \8 W1 }: s/ r6 r1 o& n
char home[5];
% F x# R( F& V( u: C}OWEN, *POWEN;
' K% s$ \! \. t; e6 m$ i7 N- M7 `. o u
#define PEI_CORE_HANDLE_SIGNATURE "owen.lu"8 g8 @9 K! y; O* j3 c7 v$ H9 q
: a3 _8 O8 @2 S6 b! W! H0 s#define _CR(Record, TYPE, Field) ((TYPE *) ((CHAR8 *) (Record) - (CHAR8 *) &(((TYPE *) 0)->Field)))
* A+ @8 P6 h c
4 ~6 ]! H) E9 s) j#define PEI_CR(Record, TYPE, Field, Signature) \2 U4 r4 ?) y/ J. X! k4 x
_CR(Record, TYPE, Field) ( c" e( T! k5 k" c+ c
( Z: Y5 U4 |$ C2 o1 L# L
#define PEI_CORE_INSTANCE_FROM_PS_THIS(a) \8 p; }) N' W$ C: ^
(PEI_CR(a, JANY, name, PEI_CORE_HANDLE_SIGNATURE))% y0 T/ z1 @/ H9 ]; {
- K( U- {. v8 E8 t8 u; ^5 `
void main()
/ u$ o0 |% q! S) U4 N3 K{) U# K' E& C+ x1 l2 }
PJANY jany;
: j6 }5 p' e3 `1 a3 j POWEN owen;
# d- ?. M- L6 t# Q$ X4 R0 F jany = malloc(sizeof(JANY));
0 H) G% w, _" n$ g" W+ w owen = malloc(sizeof(OWEN));
4 c0 R& O' H- [/ _ jany = PEI_CORE_INSTANCE_FROM_PS_THIS(owen);
- Z& f- R/ S1 y1 U8 w9 J free(owen);9 T/ X+ P' o* w) q
free(jany);
3 Y4 q7 I* U. [2 [' N return;
/ j. f% r0 ^3 b} |
|