Хорошо ли определено использование союза вместо слепка?

Сегодня утром я обсуждал с коллегой правильность «уловки кодирования» для определения порядка байтов.

Уловка была такова:

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


  foo.i = 1;
  return (foo.c[0] == 1);
}

Мне кажется, что это использование объединения неверно, потому что установка одного члена объединения и чтение другого не четко определены. Но я должен признать, что это всего лишь ощущение, и мне не хватает реальных доказательств чтобы укрепить мою точку зрения.

Это уловка верна? Кто здесь?

13
задан timrau 25 September 2012 в 23:27
поделиться