Just some messing about...
Code:
#include <stddef.h>
#include <stdio.h>
struct T
{
int i;
double d;
char c;
char s[10];
float f;
};
int Toffset(int member)
{
switch ( member )
{
case 0: return offsetof(struct T, i);
case 1: return offsetof(struct T, d);
case 2: return offsetof(struct T, c);
case 3: return offsetof(struct T, s);
case 4: return offsetof(struct T, f);
default: break;
}
return 0;
}
int main(void)
{
int i;
for ( i = 0; i < 6; ++i )
{
printf("Toffset(%d) = %d\n", i, Toffset(i));
}
return 0;
}
/* my output
Toffset(0) = 0
Toffset(1) = 8
Toffset(2) = 16
Toffset(3) = 17
Toffset(4) = 28
Toffset(5) = 0
*/