|
|
请做EFI的大侠&前辈指点一下,红色标记的那个宏怎么解释?; w- R/ L* }2 h" X1 [( ?
我调试发现他是取得那个字段的地址。
5 x" P9 z! t: D0 L- q$ G大侠能详细解释一下吗?
4 i* i% I3 t3 C7 N9 c, l, k* ?4 j- h0 h. N7 p- W
这段是我Debug的用例。
6 t5 r% K5 b1 T) E3 X
4 }) x: e$ e7 x/ {' R* r#include "stdio.h"
8 y( ?) H4 ^8 d; s0 p#include "stdlib.h"
6 E" m) ~# f- B: r+ l#include "string.h"3 \# {/ U& g, g
: |- G; l$ l. i- ]" B7 x$ f/ K! L
#define CHAR8 unsigned char$ c9 |% Y7 l/ e6 @4 \
7 ?/ f* o6 w( f7 V& ytypedef struct _tagjany: v% | @ C; W2 D& N
{
' }/ g- C/ }9 B& c. l4 _. p9 I char name[8];
+ I, f5 v5 G. s& p9 z; Y# J; N int age;
, v; x4 v4 S& M* ^. \}JANY, *PJANY;, W+ @* v- ?3 M% I( o" a* ~
' k7 I: F: [' s* a' \
typedef struct _tagowen! k2 K# S- L/ C o! |
{
3 T) q3 _6 c9 M. L$ a JANY jy;/ H: N" G. O2 N0 [; w
char home[5];
7 }7 g7 ^5 f, w2 s& H}OWEN, *POWEN;
- b5 ~, a8 V, S5 z. ~% }( J/ f( v! V3 [/ n$ q
#define PEI_CORE_HANDLE_SIGNATURE "owen.lu"
8 [6 u' y7 o9 C9 b% }6 l+ B* Z) d s H: \: t# `8 ~+ S
#define _CR(Record, TYPE, Field) ((TYPE *) ((CHAR8 *) (Record) - (CHAR8 *) &(((TYPE *) 0)->Field)))& b, p0 t& O% u/ C+ q3 U! A
6 r1 A ~1 s3 i1 M#define PEI_CR(Record, TYPE, Field, Signature) \6 L$ e: y) o3 F
_CR(Record, TYPE, Field)
9 Q; R1 n3 S: u" P e. v
4 X2 h [8 D* T6 l) U" Z! h#define PEI_CORE_INSTANCE_FROM_PS_THIS(a) \3 G, M5 y0 i: a7 _+ \# |' p% ~- C
(PEI_CR(a, JANY, name, PEI_CORE_HANDLE_SIGNATURE))2 v+ s& l' A* U: K1 K0 w- i
/ D' p& S& W5 cvoid main()- v3 D( t: h+ x. Q" z
{- k4 h' J* i9 _$ f
PJANY jany;
- N) `2 _- r, H POWEN owen;
. W8 Z/ l7 D h2 ~& z jany = malloc(sizeof(JANY));
& i, i; D6 V( _6 w% Z6 c; ?( w owen = malloc(sizeof(OWEN));& B& `5 a, R+ p. Y8 I% U0 r
jany = PEI_CORE_INSTANCE_FROM_PS_THIS(owen);
) }' z- f2 x0 N) ?9 Y6 r free(owen);
5 Z5 Q) b% t6 Y- N5 s- P free(jany);0 V6 R6 H! _- [( ]
return; 1 I8 ?2 \: ?; Q/ A
} |
|