|
|
请做EFI的大侠&前辈指点一下,红色标记的那个宏怎么解释?
2 H" g7 I6 ^2 J9 i! N! e, ~: H我调试发现他是取得那个字段的地址。
2 k( A6 T ?3 h$ ?6 I5 |( {# |5 r1 }大侠能详细解释一下吗?
' O5 P& R! G+ y+ l! v; }+ E) p; K( ^2 O& {: [
这段是我Debug的用例。
8 D7 F$ L; P$ T1 N
; d# D. {9 l9 @1 z4 T/ g0 |#include "stdio.h"
. S- c) @9 o: u6 w" `#include "stdlib.h"4 s& i( W R( L- Z0 W' p
#include "string.h"" Q& E- B; o% j7 `! S
5 q4 q" ~6 ] |, C; u& d1 K
#define CHAR8 unsigned char- P6 n! ^5 f% d3 E9 c
6 e9 R3 D3 K, |* i7 n& F1 y8 P' B/ N
typedef struct _tagjany
, u" ?) I& S' h* l3 S! m h{
/ b: `. H U' K4 a char name[8];3 |) j) V; y, Q' s9 _ a% {8 W
int age;4 m$ y) Z' Z5 P0 X9 b2 U0 r/ V, F
}JANY, *PJANY;
! [0 ]2 |7 p3 }1 L) Q+ n4 C
/ R$ ~0 a2 N' U$ U6 G- G7 mtypedef struct _tagowen
0 T$ A0 N2 ]; Y- S: W3 d{: p; O. U0 Q5 a3 n; \
JANY jy;
) \; P. P9 S$ ^8 Y4 Q char home[5];
. a! D! N8 K. ?0 H5 W! u, y3 M}OWEN, *POWEN;
# M& Q& J& E4 _6 ]
2 J- x5 l( s+ S( `6 o#define PEI_CORE_HANDLE_SIGNATURE "owen.lu"/ P4 w. a$ H! Q" x& E
1 ]* `" F+ M4 S4 \1 A. m7 b8 Q
#define _CR(Record, TYPE, Field) ((TYPE *) ((CHAR8 *) (Record) - (CHAR8 *) &(((TYPE *) 0)->Field)))
# k* i& T" b$ | R; ^% l9 r4 T5 S2 l! p5 G
#define PEI_CR(Record, TYPE, Field, Signature) \( Z- Z# }7 P. M" v. J' k# \6 z
_CR(Record, TYPE, Field)
# _0 N: D/ h6 o, s' e, I: d! Y$ n, F# o4 b, n2 h. a9 `6 X
#define PEI_CORE_INSTANCE_FROM_PS_THIS(a) \- i" e) A, b5 ]" V2 s! ]& Q
(PEI_CR(a, JANY, name, PEI_CORE_HANDLE_SIGNATURE))
5 N _8 w: s6 \" l/ |. [/ l: m9 c- C# m
void main(), o. F: B- ~9 g4 T! \4 i h4 K4 G5 P+ |
{
! q- o& P6 W! ]3 S PJANY jany;; P' d! e8 l; i1 j4 C7 C! V8 {
POWEN owen;
; J+ [4 p+ P4 \# J2 J$ k3 X jany = malloc(sizeof(JANY));
$ M; U! T8 m2 `% S0 X1 r/ G* i owen = malloc(sizeof(OWEN));. n Y5 {9 Z* f' O$ f& C
jany = PEI_CORE_INSTANCE_FROM_PS_THIS(owen);
2 g8 g: Q$ G1 _" x) M: A free(owen);
3 T6 j' \# u4 Q" m free(jany);, V8 q0 y% f) G7 Q5 L$ p' n
return; - N: Z+ O! q. q8 Z: B% E
} |
|