Steve Bennett <[EMAIL PROTECTED]> wrote:
> Bad news!
>
> sizeof(test1) is 12
> offsetof(test1, more) is 8
> offsetof(test1, dummy) is 10
>
> I suppose this is the bit you are referring to:
> > the size
> > of the structure shall be equal to the offset of the last
> > element of an otherwise identical structure that replaces
> > the flexible array member with an array of unspecified
> > length.97)
>
> That 'of unspecified length' might well account for this behaviour.
I don't see this. Let us try to do what's in the text:
Use this struct:
struct test1 {
char blerg[1];
char type[4];
char flibble[3];
char more[2];
char dummy[];
};
Replace the flex array with an an array of unspecified (which means
irrelevent) length:
struct test2 {
char blerg[1];
char type[4];
char flibble[3];
char more[2];
char dummy[1];
};
Now, sizeof(test1) needs to be == offsetof(test2, dummy);
It seems that this is mot the case for GCC.
Jörg
--
EMail:[EMAIL PROTECTED] (home) Jörg Schilling D-13353 Berlin
[EMAIL PROTECTED] (uni)
[EMAIL PROTECTED] (work) Blog: http://schily.blogspot.com/
URL: http://cdrecord.berlios.de/old/private/ ftp://ftp.berlios.de/pub/schily