EGCS 2.91.66 Bug: sizeof() + struct problem (char == and != int)

Martin v. Loewis martin@mira.isdn.cs.tu-berlin.de
Thu Sep 30 19:57:00 GMT 1999


> I get this output:
> ---------------------------------------------------------------------------
> sizeof=12
> sizeof=12
> 1 -- 2 -- 4
> ---------------------------------------------------------------------------
> whereas I had expected it to be 10 and 7 !!

Thanks for your bug report. I fail to see the bug in it, though - you
did not say *why* you expected these results, and why you think that
any other results are wrong.

Anyway, there is a good reason for it: The compiler aligns fields
according to their "alignment requirements". You can find out more
about alignment in a number of documents:
- the ISO C standard,
- documentation about the Intel 386 processor, 
- definition of the Unix ABI on Intel, and
- the GCC documentation.

As a result of alignment, the compiler inserts "padding" between
fields. *Not* doing so would be a bug, as it would break binary
compatibility.

Hope this helps,
Martin



More information about the Gcc-bugs mailing list