|
|
请做EFI的大侠&前辈指点一下,红色标记的那个宏怎么解释?
0 V. r) ^# w( j. a, f- p我调试发现他是取得那个字段的地址。5 O" Y" ?, [9 l
大侠能详细解释一下吗?
# U$ h, i9 Y" ^ \. p0 e
3 J3 R% K2 I; t3 I这段是我Debug的用例。, o+ V8 j! N- n M. ]
) Z4 A& l Q# c8 T3 S& }#include "stdio.h"
4 D' ]( W! C0 F$ j#include "stdlib.h"
9 K5 ~& g/ k7 S, H#include "string.h"
3 ~/ F8 |2 k4 A' Q/ L$ T% g
5 k# v. D4 o- p s#define CHAR8 unsigned char
0 _& U2 I5 I( ]! R, u' `4 K; C
! k' n8 K9 k+ S$ Y- m. Jtypedef struct _tagjany
% n! V8 ]. }; |! _( ]$ o{
8 D1 Q: D: ?; E& ? @$ Q char name[8];- Q# O5 s; T6 [( \
int age;/ u5 u+ K5 K7 p" O) H
}JANY, *PJANY;
9 Q8 c r( O) V7 U- S" J4 n. C9 W+ U4 ]0 C+ ]6 w
typedef struct _tagowen k$ j' H! \- X( ^! ]: F5 g
{
$ _3 P; |% G) Q$ i0 b7 ?7 X7 z) T/ t JANY jy;
1 V# Z( s# I- ]$ U, I char home[5];
7 ]) h4 p$ n3 [# J' u5 Z}OWEN, *POWEN;
4 U* D$ G; r8 H! j5 w# l2 ] f: i2 f, t# @2 y+ d% R( ~
#define PEI_CORE_HANDLE_SIGNATURE "owen.lu"9 w' }/ D3 B3 {
% I- L) R' g5 T* O' T) z
#define _CR(Record, TYPE, Field) ((TYPE *) ((CHAR8 *) (Record) - (CHAR8 *) &(((TYPE *) 0)->Field)))$ Y; y. k0 c+ W7 l6 W6 k# I
. F/ \! Z4 o- G I1 Q* _2 T
#define PEI_CR(Record, TYPE, Field, Signature) \
* ?" q4 M; C; i. g3 o/ a* { _CR(Record, TYPE, Field)
0 e5 `+ f2 Q5 T' `0 v' o e+ ]! I" E9 E
#define PEI_CORE_INSTANCE_FROM_PS_THIS(a) \5 C7 s2 c+ t5 {' }$ t9 T
(PEI_CR(a, JANY, name, PEI_CORE_HANDLE_SIGNATURE))
+ }5 f3 i/ X4 ~ x$ C. E% M6 e0 o, y
1 G. m4 U! s0 t6 |2 A$ _void main()
# C% C5 X" Q; Y: z- [4 v{ P$ O9 W: L/ `* N& z2 z, h7 F
PJANY jany;
- `6 x7 v4 L3 l$ A POWEN owen;
" _8 I. e5 W( z: g3 Y jany = malloc(sizeof(JANY));1 x V: {4 f6 K) f* [8 R
owen = malloc(sizeof(OWEN));
3 l7 ?0 w+ E# ] jany = PEI_CORE_INSTANCE_FROM_PS_THIS(owen);
# T, l) O* K8 q2 s e free(owen);
8 B; {2 |0 i7 H free(jany);' A5 C% l( L/ S
return; " m9 i' p% {' v
} |
|