|
请做EFI的大侠&前辈指点一下,红色标记的那个宏怎么解释?; r9 q8 d6 ?4 `' J) v( I
我调试发现他是取得那个字段的地址。; j( x9 K# |& k3 @; T Z
大侠能详细解释一下吗?! w% r4 S: K' b
+ a3 z! O6 \- P/ i/ ?/ N0 U" s
这段是我Debug的用例。( |3 h' B% } z
: z: l% o* G( d* f- G
#include "stdio.h"
( P0 a! h2 j# j' \2 S$ q5 ?4 c#include "stdlib.h"
6 r% {# u6 @; @1 W#include "string.h"
! L: Q, ~$ N7 P; @
, J6 c& _% i; B) M3 i8 @( n#define CHAR8 unsigned char o! u! X. e- O3 r4 Z8 O( p
$ x( y# h' z2 m1 w- n' x7 N
typedef struct _tagjany1 n: X( E$ F4 U# [0 ^
{
# Y* g' X, j( M+ c2 Z6 U7 A9 H6 Y. m char name[8];
! p) S3 [( [" t. _ int age;- s; N, l! Y, G1 n
}JANY, *PJANY;3 c) r6 a5 o- c% l& ~
& v+ ]$ R' x9 P& Z2 V" [) V3 s- \typedef struct _tagowen
) \! l* ], W7 ~5 `0 t{
( M( F l- V4 ~" {0 n8 N% ] d/ ]7 q JANY jy;
9 n! b( d! v$ `! }2 V* [$ f+ U1 K char home[5];
1 G, V1 _" }" e( n0 `7 I( ?}OWEN, *POWEN;
# |3 V' D" x: ?) V' \! G" x! K
: W5 m( v' k' ~" g4 Z- ?9 i#define PEI_CORE_HANDLE_SIGNATURE "owen.lu"7 G- ?# h9 M7 I: }
t6 f4 J1 Y! Y+ @/ c
#define _CR(Record, TYPE, Field) ((TYPE *) ((CHAR8 *) (Record) - (CHAR8 *) &(((TYPE *) 0)->Field)))
9 ~2 o2 R$ h: {9 c3 [ R/ j; ?+ h' B- Q9 M, F
#define PEI_CR(Record, TYPE, Field, Signature) \
7 J3 C2 \+ {2 b2 a6 w% ~& H _CR(Record, TYPE, Field)
4 O; }5 m9 f/ _3 i* o8 H0 ]/ ?2 M7 H0 s C' g; a$ H
#define PEI_CORE_INSTANCE_FROM_PS_THIS(a) \; E8 ^1 L ~9 C. `2 `
(PEI_CR(a, JANY, name, PEI_CORE_HANDLE_SIGNATURE))
4 C* p) W" c& w& u
4 t% r' t8 P4 x* r6 _void main()! t4 a1 S8 Q( v( A
{
) v. I9 s$ k( a& P8 X) m PJANY jany;
% `+ y/ \6 T- F3 u! T POWEN owen;$ q' m& s8 }4 X( }
jany = malloc(sizeof(JANY));
! N1 ^& P9 |! u- ^: ?8 C0 H# I owen = malloc(sizeof(OWEN));
" S2 G7 M' D( \7 g6 x- G jany = PEI_CORE_INSTANCE_FROM_PS_THIS(owen);3 n$ A& H' p" k# G9 o5 G! L. H
free(owen);
/ `" [. Z$ Y' q free(jany);8 k; V) f: h! i
return; ! s1 Q( y4 r8 b' B/ M# U* w
} |
|