|
请做EFI的大侠&前辈指点一下,红色标记的那个宏怎么解释?
, B' a% b, A2 C2 _, |7 g3 r6 q我调试发现他是取得那个字段的地址。8 c0 m- k% O6 W/ q* W* ~
大侠能详细解释一下吗?
4 z1 }5 K; R: T! S+ h! h( ?7 ~$ Q, L, x# ?
这段是我Debug的用例。
5 I5 H2 @% G. @
, X& n# Q ^$ g5 F: D" H9 Y0 t#include "stdio.h"2 S3 i# y. K7 X3 S2 q% q
#include "stdlib.h"' }- e1 C% w) m6 t# B
#include "string.h"
5 N& r( T$ {& L: l, r* W
# E" w$ C+ c) M" I( w2 U9 y#define CHAR8 unsigned char
8 ]8 F5 B0 p" t/ C0 \0 U. A W
! C8 m8 `0 U2 {- ? @typedef struct _tagjany' D( _- X' a% g* S+ \
{7 R ?( N/ m4 P4 n
char name[8];, I5 X2 J% e& S: p; s4 R, l3 h
int age;
9 Q. l w% U7 Z4 K}JANY, *PJANY;9 p6 a: C, _4 x: N4 d
) W) Q' X. V% `( ^3 atypedef struct _tagowen
4 J" {* E: l+ i9 n{
) X1 e+ ~3 ~# Q/ [4 J% @- { JANY jy;) C8 c, a# x: V2 b, h) v( D& L
char home[5];- ]$ j9 o' e5 ~ V
}OWEN, *POWEN;+ f1 p8 I6 _7 g2 ^+ Q
- L) c4 _! a7 E5 z( |
#define PEI_CORE_HANDLE_SIGNATURE "owen.lu"
" O' ^6 w Q: T5 J$ e3 H' [ K+ ^4 N5 o
#define _CR(Record, TYPE, Field) ((TYPE *) ((CHAR8 *) (Record) - (CHAR8 *) &(((TYPE *) 0)->Field)))
# y- a- H2 |" b4 Q; E; \9 I* r- W- A: ^/ \
#define PEI_CR(Record, TYPE, Field, Signature) \
r+ J Y7 W7 x' v _CR(Record, TYPE, Field)
, g4 J- y# Y4 G0 ]% J; l& e5 B( n! E( g! Z' R% L, ?6 W( f4 z
#define PEI_CORE_INSTANCE_FROM_PS_THIS(a) \
- \" U( |, }5 \/ L1 j (PEI_CR(a, JANY, name, PEI_CORE_HANDLE_SIGNATURE))8 `) [+ c; _/ E8 v+ L
2 k- m: X8 x) c+ a. `void main()4 F4 O; Y5 l# S1 d( y, q( b
{! y* F. |2 t) ]
PJANY jany;
- ?( }( Y5 O" K! h0 r: L# x POWEN owen;( ^, T" X8 _1 B7 x# p
jany = malloc(sizeof(JANY));
! ~9 Q- ?7 P! Y owen = malloc(sizeof(OWEN));- j# p# r+ _% e) g$ T) L
jany = PEI_CORE_INSTANCE_FROM_PS_THIS(owen);
# v6 x3 K) i5 j7 ]/ N( t free(owen);* N; F K0 [0 z' \
free(jany);- Q6 J Q8 \! U4 B
return; , N- [$ m; R& q6 }& v, j3 X5 f
} |
|