offset of structure fields
Eljay Love-Jensen
eljay@adobe.com
Wed Jul 7 12:58:00 GMT 2004
Hi Massimiliano,
Try this...
-----------------------------------------------
//I need to know the offset of the fields. For example f1[0].ff1 is placed
at the offset 0, and f1[2].ff2, or f3?
//There is a way to obtain these offsets without have an istance of Param_t?
#include <stddef.h> /* stddef.h has offsetof macro. */
typedef unsigned short int u16_t;
typedef unsigned char u8_t;
typedef struct
{
struct {
u16_t ff1;
u16_t ff2;
u16_t ff3;
} f1[3];
u8_t f2;
u8_t f3;
u8_t f4;
u16_t f5;
} Param_t;
int main()
{
size_t dist;
dist = offsetof(Param_t, f1[0].ff1);
printf("f1[0].ff1 is at byte %lu\n", (unsigned long int)dist);
dist = offsetof(Param_t, f1[2].ff2);
printf("f1[2].ff2 is at byte %lu\n", (unsigned long int)dist);
dist = offsetof(Param_t, f3);
printf("f3 is at byte %lu\n", (unsigned long int)dist);
}
/* Output, using GCC 3.3.1 on Cygwin / WinNT
f1[0].ff1 is at byte 0
f1[2].ff2 is at byte 14
f3 is at byte 19
*/
-----------------------------------------------
HTH,
--Eljay
More information about the Gcc-help
mailing list