Por ejemplo, digamos que tenemos una unión

typedef union {
unsigned long U32;
float f;
}U_U32_F;

Cuando una variable de este tipo de unión es declarado, es allí una manera de establecer un valor inicial?

U_U32_F u = 0xffffffff;   //Does not work...is there a correct syntax for this?
  • ¿Qué es u32?…..
  • Mis disculpas. Yo había u32 typedef ed, pero no se muestra en el ejemplo.
InformationsquelleAutor semaj | 2010-01-27

3 Comentarios

  1. 32

    El uso de una lista de inicializador:

    U_U32_F u = { 0xffffffff };

    Puede establecer otros miembros de la primera a través de

    U_U32_F u = { .f = 42.0 };
    • Sólo una nota que la 2ª ejemplo es una C99 característica que no es soportado por todos los compiladores.
  2. 3

    Tenga en cuenta que por cada miembro de la unión de inicialización no funciona en el pre-C99 compiladores, de los cuales hay un deprimente número por ahí. El actual compilador de C de Microsoft no lo admite, por ejemplo. (Yo vagamente recuerdo que incluso no admiten el primer miembro de la inicialización, que se remonta a K&R II, pero yo podría estar equivocado acerca de eso.)

    • Microsoft más o menos abandonada C y quiere que usted use C++ (o mejor aún: C#); estoy muy contento con MinGW, ahora que gcc-4.4 está fuera; en el futuro, Clang/LLVM podría ser una alternativa viable y si estás buscando un compilador
    • El compilador de C de Microsoft no (y a mi conocimiento no tiene, ni tendrá) se ajusta a ninguna norma en particular.

Dejar respuesta

Please enter your comment!
Please enter your name here