Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Home » Tip Bank » C++
Language: C
Expertise: Intermediate
Aug 6, 2003

Find an Offset into a Structure

Here's the code:

#define offset(a,b)  ((int) (&( ((a*)(0)) -> b)))
Step by step, here's what it does:
  1. Type-cast 0, or NULL, into a pointer of type a. So a must be a typename.
  2. Member-select b from that pointer. So a must be a structure typename, and b some member property.
  3. Take the address of b. Since the a* used points to address 0, and b is some offset above the start of the a-structure, this means you're getting the offset of b within a plus the address of a, which is zero. That is, you get the offset of b within a.
  4. Typecast that number to an integer.
Sanjeev Kumar
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap
Thanks for your registration, follow us on our social networks to keep up-to-date