Pentru a obţine locaţia unei structuri ...

B

blackjack

Guest
Cu câteva zile în urmă, am fost în căutarea unor macro care satisface cererea: calcul amplasarea unui struture cu adresa si numele unor teren şi ca parametri.În cele din urmă, am găsit următoarele:

/ / Ptr: adresa de teren
/ / Membru: numele de câmp
/ / Tip: tipul de structura
# define get_container (ptr, tip, membru) \
((tip *) ((char *) (PTR) - (tip nesemnate lung )(&(( *) 0) -> membru)))

Şi it works, dar eu nu ştiu cum se face.Ar putea explica cineva pentru mine, te rog?
* Vezi fisier atasat, de exemplu, cod.
Ne pare rau, dar ai nevoie de login pentru a vizualiza această ataşament

 
((tip *) ((char *) (PTR) - (tip nesemnate lung )(&(( *) 0) -> membru))) ==>A: (char *) ptr -> locaţia în care membrul este de la

B: (tip *) 0 ----> presupune că structura este situat la 0, atunci ---

C: & ((tip *) 0 -> membru )---> este net de offset de la începutul structurii de la locaţia membreAC este locatia (acum adresa) de la începutul sturcture.

 
M-am prins!Thank you!!<img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Foarte fericit" border="0" />
 

Welcome to EDABoard.com

Sponsor

Back
Top