Would this union work if char had stricter alignment requirements than int?

Posted by paxdiablo on Stack Overflow See other posts from Stack Overflow or by paxdiablo
Published on 2010-12-21T05:23:55Z Indexed on 2010/12/21 5:31 UTC
Read the original article Hit count: 204

Filed under:
|
|
|

Recently I came across the following snippet, which is an attempt to ensure all bytes of i (nad no more) are accessible as individual elements of c:

union {
  int i;
  char c[sizeof(int)];
};

Now this seems a good idea, but I wonder if the standard allows for the case where the alignment requirements for char are more restrictive than that for int.

In other words, is it possible to have a four-byte int which is required to be aligned on a four-byte boundary with a one-byte char (it is one byte, by definition, see below) required to be aligned on a sixteen-byte boundary?

And would this stuff up the use of the union above?

Two things to note.

  1. I'm talking specifically about what the standard allows here, not what a sane implementor/architecture would provide.

  2. I'm using the term "byte" in the ISO C sense, where it's the width of a char, not necessarily 8 bits.

© Stack Overflow or respective owner

Related posts about c

    Related posts about alignment