i've got a structure that looks like this
/* ethernet header */
typedef struct{
uchar d[6];
uchar s[6];
uchar type[2];
}Ehdr;
typedef struct{
Ehdr;
uchar op[2];
...
}Pkt;
the problem is that 8c adds two bytes of padding between
the end of pkt->type and pkt->op. since sizeof Ehdr%wordsize != 0
this isn't totally unexpected. suprisingly, adding the
appropriate packed pragmas doesn't eliminate the padding.
is this a bug?
of course, if my original definition had been
typedef struct{
uchar d[6];
uchar s[6];
uchar type[2];
uchar op[2];
...
}Pkt;
i would have been fine. but doesn't this defeat
the point of unnamed structures?
also, the fact that there is padding contradicts
my mental model of unnamed structures. i thought
that all the elements of unnamed structures were
laid down as if they were elements of the enclosing
structure. my reading /sys/doc/compilers.ps doesn't
say much. is there another reference on unnamed
structures?
- erik