|
|
请做EFI的大侠&前辈指点一下,红色标记的那个宏怎么解释?
1 z1 n6 s- o; i3 d' b6 l6 U我调试发现他是取得那个字段的地址。+ Y4 d/ C* ^5 L& h
大侠能详细解释一下吗?
6 R' O$ ]/ m h [2 y% R4 u' \0 ~9 `+ k. D/ W `+ W) W
这段是我Debug的用例。
8 X1 P, Q2 Q+ Z( h3 @9 i* Z5 j# j7 Z' i; \2 L6 c" Y9 ]8 B6 d( p) p
#include "stdio.h"
) I% j" c2 {! V0 ?; M- P#include "stdlib.h"
; \; k* m$ f0 N6 |#include "string.h"$ I% E; o0 \2 |2 O6 y8 Q, A
+ ~( I7 Q( I2 ]7 V# B
#define CHAR8 unsigned char7 }; W' Q! p6 m! n! C( {
; |. E; g+ H9 j& A, k7 Z$ c) N( Dtypedef struct _tagjany
: V% Z% i3 g: S! q& a' _{
* | E( |' V4 ?4 x char name[8];$ g ~( u% O0 x: E( H1 e. Q- {# x5 C
int age;" J' f% A' I0 K+ U1 I6 `4 K
}JANY, *PJANY;
& ~3 T' x3 x- D* |; G
1 x! p3 h$ K$ D7 Ptypedef struct _tagowen* w0 R+ ] H- Y& n s$ V
{
- p7 R# d+ J6 [2 Z; K JANY jy;6 c1 w9 I5 x6 [. P- ~3 {4 c" f
char home[5];
A b9 K/ C# W}OWEN, *POWEN;! C( _7 B. }2 ?' r$ y" S9 Z, x4 N
- L, ^- I! K: o3 b# J D
#define PEI_CORE_HANDLE_SIGNATURE "owen.lu"
9 [" T$ }( j2 s3 P2 ~/ l K' b$ Q& N* X$ `0 l
#define _CR(Record, TYPE, Field) ((TYPE *) ((CHAR8 *) (Record) - (CHAR8 *) &(((TYPE *) 0)->Field)))9 G5 W" I& N+ F, Z/ `9 ?% j$ i" [9 W
2 N# ?/ J8 U: o# z' h
#define PEI_CR(Record, TYPE, Field, Signature) \
% J% t) y/ f2 ?7 T. O _CR(Record, TYPE, Field)
% t5 ~" G" r# K: [' B& T i, z& k$ Y f" r2 ^. f
#define PEI_CORE_INSTANCE_FROM_PS_THIS(a) \
9 M! S: Y& ]7 c/ ]9 \ (PEI_CR(a, JANY, name, PEI_CORE_HANDLE_SIGNATURE))
1 r) S o2 |, I' B8 W
; L; L0 z- @) \1 V* c) N/ d# cvoid main()( u$ l! D$ x" D$ l1 J
{- t# e/ ` X$ d7 o7 ?" K
PJANY jany; c( f& r" L, ~
POWEN owen;
* r Z! T6 d: A jany = malloc(sizeof(JANY));
4 [. O5 X' l q" s owen = malloc(sizeof(OWEN));2 r( o+ G3 X* q) }6 B
jany = PEI_CORE_INSTANCE_FROM_PS_THIS(owen);
# U' [; O0 T+ h% a- l1 E [ free(owen);0 g5 t. K; }5 q& {
free(jany);
- t S' w$ D T0 \* M return; 9 |) ? X8 y% j. F: p; P1 `2 ^! b
} |
|