Сегодня утром я обсуждал с коллегой правильность «уловки кодирования» для определения порядка байтов.
Уловка была такова:
bool is_big_endian()
{
union
{
int i;
char c[sizeof(int)];
} foo;
foo.i = 1;
return (foo.c[0] == 1);
}
Мне кажется, что это использование объединения
неверно, потому что установка одного члена объединения и чтение другого не четко определены. Но я должен признать, что это всего лишь ощущение, и мне не хватает реальных доказательств чтобы укрепить мою точку зрения.
Это уловка верна? Кто здесь?