¿Está utilizando una unión en lugar de un elenco bien definido?

uve una discusión esta mañana con un colega sobre la exactitud de un "truco de codificación" para detectar endianness.

El truco fue:

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


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

ara mí, parece que este uso de unaunion es incorrecto porque configurar un miembro de la unión y leer otro esn bien definido. Pero tengo que admitir que esto es solo un sentimiento y me faltan pruebas reales para fortalecer mi punto.

¿Es correcto este truco? ¿Quién está aquí?

Respuestas a la pregunta(5)

Su respuesta a la pregunta