Обсуждение: #define GEVHDRSZ ( offsetof(GistEntryVector, vector[0]) ) explanation please

Поиск
Список
Период
Сортировка

#define GEVHDRSZ ( offsetof(GistEntryVector, vector[0]) ) explanation please

От
"jorge alberto"
Дата:
hi!<br />Can you tell me what does this line means<br />#define GEVHDRSZ    ( offsetof(GistEntryVector, vector[0]) )<br
/><pre><spanclass="preprocessor">#ifndef offsetof</span>
 
<a name="l00501"></a><span class="preprocessor"></span><span class="preprocessor">#define offsetof(type, field)
((long)&((type *)0)->field)</span><br /><span class="preprocessor"></span><span class="preprocessor">
 
#endif   </span><span class="comment">/* offsetof */</span><br /><br /></pre>regards <br />jorge<br /><br />

Re: #define GEVHDRSZ ( offsetof(GistEntryVector, vector[0]) ) explanation please

От
Martijn van Oosterhout
Дата:
On Fri, Dec 08, 2006 at 11:53:23AM -0500, jorge alberto wrote:
> hi!
> Can you tell me what does this line means
> #define GEVHDRSZ    ( offsetof(GistEntryVector, vector[0]) )
>
> #ifndef offsetof
> #define offsetof(type, field)   ((long) &((type *)0)->field)
> #endif   /* offsetof */

It's defining the GEVHDRSZ constant to be the offset of the vector
field in the GistEntryVector structure.

The offsetof definition is for systems that don't define it already. It
cleverly determines the offset by asking for the address of the vector
field if the structure is placed at address zero.

Have a nice day,
--
Martijn van Oosterhout   <kleptog@svana.org>   http://svana.org/kleptog/
> From each according to his ability. To each according to his ability to litigate.