|
请做EFI的大侠&前辈指点一下,红色标记的那个宏怎么解释?
3 @% ~. [& [& Y( z. I我调试发现他是取得那个字段的地址。1 a. y# R R8 M6 d
大侠能详细解释一下吗?
, @: X3 Q, P6 `9 @4 O& d( R
8 \/ C0 t7 B; R) z' ]" l这段是我Debug的用例。+ X$ M k8 t% Y- [& i. I) |$ D" r$ L
) s# x. C/ u$ j1 v, j( L2 {#include "stdio.h"* L* ]& m s/ T1 n" J6 K' P; C' h
#include "stdlib.h"- a; C# L- [/ ~. `, R8 W/ ~
#include "string.h" f8 t8 ]! p5 s& D, _7 T* }
5 n' v, @* ?% b6 o" |8 k
#define CHAR8 unsigned char# R4 r) P% w, r" q# m
4 V2 Y" m9 j( `
typedef struct _tagjany0 l1 h& s, k, X0 H9 u/ D
{
. H) Q8 i; n5 Z- o; } char name[8];
, p1 {4 z" v% e% y int age;
" ?7 Q" B v H& @: Y}JANY, *PJANY;
9 e5 _$ @8 t, C' T
# U' @) Q3 V- `# q: y6 `typedef struct _tagowen
4 F+ H% g/ S, q( @" O0 w4 c{
) \7 d) p( e# v/ o JANY jy;
; u. W; R% `1 z5 d1 N" `* D char home[5];
7 h/ j: |! I( x}OWEN, *POWEN;
$ C' O) t1 {: k! ?* J/ U
# G5 T$ L9 W. Z; s1 a, h#define PEI_CORE_HANDLE_SIGNATURE "owen.lu"
6 P3 n# G" E9 U3 m( n+ M$ h7 ~5 x% j
#define _CR(Record, TYPE, Field) ((TYPE *) ((CHAR8 *) (Record) - (CHAR8 *) &(((TYPE *) 0)->Field)))7 J9 Z+ F8 t# J& l5 l9 U, L
; p& U" V) y% [ Q& k: t) @
#define PEI_CR(Record, TYPE, Field, Signature) \
' I! I& B2 K- t8 W. A& n+ I _CR(Record, TYPE, Field) 0 m$ j8 I+ P' X1 l. U
" S7 I9 @3 O5 C8 c3 M( `. G
#define PEI_CORE_INSTANCE_FROM_PS_THIS(a) \
; Q$ i5 d; V$ Z* _# G (PEI_CR(a, JANY, name, PEI_CORE_HANDLE_SIGNATURE))
1 B1 k8 i3 K- g( V! }& J6 l- S
4 U3 g9 p; ^) ~6 g: Wvoid main()5 e( D( S. e) s
{
8 w2 c$ N \9 R; Q9 ^! C; ] PJANY jany;5 ]2 E; Q4 }! E5 v/ i# h! M
POWEN owen;& R+ \3 y+ t: a( X+ w; E; @
jany = malloc(sizeof(JANY));* N' e9 ?8 Z! `& s, M
owen = malloc(sizeof(OWEN));8 t* C( K# ?" o, p/ r
jany = PEI_CORE_INSTANCE_FROM_PS_THIS(owen);
5 z# B% w- i5 L3 l8 M3 F free(owen);, G9 Y( C2 a3 S) J0 h, R
free(jany);8 _: ]5 Q `0 q0 F8 c
return; 2 v, R4 S* ~& t \
} |
|