|
|
请做EFI的大侠&前辈指点一下,红色标记的那个宏怎么解释?2 Q. Z( R( |' Y+ R
我调试发现他是取得那个字段的地址。
: d) `+ |+ B5 O4 D7 x3 ^6 V大侠能详细解释一下吗?5 U* Y8 s4 j" |! N) S- ?3 g, B' _
3 {& ]/ t/ T+ r5 \) g
这段是我Debug的用例。- t! U! `. @) y$ q
- k+ n5 T/ c/ c" o) {$ e; Y) T. @; q4 M
#include "stdio.h"
! ^5 W) {3 s$ N( c#include "stdlib.h"
- b Y9 H) ~( C" Q& L/ w1 h% ?#include "string.h", V; x5 o; t& E1 f# ^$ r9 }* a
+ ?4 n; W x3 l
#define CHAR8 unsigned char
4 _9 Y e1 [7 m- d$ F3 x8 Q# P+ j) M* q, ~5 z2 A/ v
typedef struct _tagjany4 H4 t) j7 M+ T+ X) `5 K+ c
{
, B" b/ z& X% W+ I% s! _ char name[8];
. D6 u0 ~" b0 W& K1 b! E int age;
& Z7 `9 q* D- j) J2 V, x}JANY, *PJANY;
# N9 P' M2 @; l* u# @6 @' w; _6 D0 Y/ C% l# L$ |
typedef struct _tagowen
4 m( L0 D/ N# r( i& f0 O{
; g q8 f# [7 n( F+ `5 e' | JANY jy;
; J# L3 q6 A3 E! [8 G' v' e) Q$ P char home[5];
* K+ i6 \$ f! F3 D, I+ a" m1 I}OWEN, *POWEN;: ]9 N; J- O$ @9 C. A5 H7 O9 Y) ~5 v
1 _8 l. |% w7 {5 W4 |* }
#define PEI_CORE_HANDLE_SIGNATURE "owen.lu"# y% H+ Q. C# h# g9 j9 w0 T
7 @3 T6 V8 u4 f9 Q E' M! r$ [
#define _CR(Record, TYPE, Field) ((TYPE *) ((CHAR8 *) (Record) - (CHAR8 *) &(((TYPE *) 0)->Field)))
) _" K) s4 B, K) Q& r) j4 |9 Z1 d6 C* f* b! p% O* g a
#define PEI_CR(Record, TYPE, Field, Signature) \: Y# u2 ~- g, B8 N
_CR(Record, TYPE, Field) * m# V' a* A1 Z% b' W8 m# u' O. x
2 _! F. j2 j \' f' [
#define PEI_CORE_INSTANCE_FROM_PS_THIS(a) \
9 A2 z; S" D2 g: K) R; t+ f. M (PEI_CR(a, JANY, name, PEI_CORE_HANDLE_SIGNATURE))
5 j) y1 a& F/ h/ d/ O' ]' o
. }$ o3 |6 m1 g' E1 f/ B" K# U/ ^void main()
" M6 `# R8 V! e) A* L! T{
5 ~2 Y# W" B% ^+ M+ R. {6 u PJANY jany;3 o2 \# t2 B& @) G% |6 q" `" K
POWEN owen;2 L( R2 ]: a# f
jany = malloc(sizeof(JANY));& g! j1 F6 Y* B8 j$ n* _* B0 g
owen = malloc(sizeof(OWEN));
6 D1 C% D' ~# }9 ?% M jany = PEI_CORE_INSTANCE_FROM_PS_THIS(owen);" L" H6 c( I( E o+ s, _+ x
free(owen);
\; M0 f! f' p) p. s1 ] free(jany);
. R5 q* ~1 N/ ~3 f+ M return; . G$ ~ N+ z$ N. X
} |
|