|
请做EFI的大侠&前辈指点一下,红色标记的那个宏怎么解释?9 i; J s8 O- d3 @, w4 q/ E% x
我调试发现他是取得那个字段的地址。
, { r* ~0 [) w- ?8 c大侠能详细解释一下吗?* Z9 A* `# W% U
' |* F( Y- S. W& t这段是我Debug的用例。
7 `1 z. e+ b5 e6 n- d/ ~3 G
; N1 e8 L' f, W, j: r#include "stdio.h" W: a( P! G! S/ |! r
#include "stdlib.h"
/ h# R, k, W1 v# o8 ^: r! u#include "string.h"" r: r* f+ C7 [& J3 G
! V! s. |4 `: i#define CHAR8 unsigned char
! P3 v! N+ @3 }4 d& U9 \
& \# m, V2 T( W0 i% Ftypedef struct _tagjany4 ]( V1 ]5 `: }( ]( _3 A
{, M# l: @8 U3 M5 d
char name[8];8 U6 ]. i; v7 l3 K% V
int age;
+ C& i/ o, S' s0 Z% ?9 Z, @2 j! z}JANY, *PJANY;+ y( {2 P+ p% ]. Y8 R
6 N1 E: n- u; G r; }/ M& L' X5 ltypedef struct _tagowen2 n9 D! m3 t. \1 x2 W+ y
{
( @2 B3 t9 ?8 }# M JANY jy;
/ [; I; {: V; b' Q- _) U+ @+ N- r char home[5];
* y7 _( B1 a! B/ H& t}OWEN, *POWEN;
8 @* B$ c- j8 N9 l" D! v
" {5 w% l( E6 w: L+ |#define PEI_CORE_HANDLE_SIGNATURE "owen.lu"2 E7 `. W, T- e; j8 {( ~
8 F3 J2 Y7 ~! t1 K1 J
#define _CR(Record, TYPE, Field) ((TYPE *) ((CHAR8 *) (Record) - (CHAR8 *) &(((TYPE *) 0)->Field)))
+ c" v, H; `$ \2 U* F
" ^9 N8 \4 m- O3 R8 h#define PEI_CR(Record, TYPE, Field, Signature) \
' N2 a7 c. s& D3 r9 _1 P0 z _CR(Record, TYPE, Field) 3 p0 _; p5 m1 Y) _
6 V0 Y; p/ \6 M
#define PEI_CORE_INSTANCE_FROM_PS_THIS(a) \1 i. k! B8 P- g9 |1 `! a
(PEI_CR(a, JANY, name, PEI_CORE_HANDLE_SIGNATURE)) l: Z3 {/ V, b6 `% T/ f9 q
# W, l3 I; ]. B% M5 `void main()
: y, `! H6 D/ l6 Y. I, T, W$ _{
. s2 J7 E; t, I PJANY jany;
! q+ a, j1 @# W; }( h, Z- ~# C POWEN owen;: K# k. ?+ f' l- ` c# j) [
jany = malloc(sizeof(JANY));
3 ?. y [# ~- w6 x0 i' B8 _0 @9 H owen = malloc(sizeof(OWEN));( [1 ]* C% X" {* m
jany = PEI_CORE_INSTANCE_FROM_PS_THIS(owen);" S% _! c/ v4 q( o9 a6 t9 J1 x# H
free(owen);
4 H8 s! P4 o6 u6 c+ M# W# R4 t4 ^7 c free(jany);7 g7 p+ B; d, Z( K' f0 I
return;
- `3 w( f4 D' V- \1 u) g8 R} |
|