2010-05-03 9 views

Respuesta

8

veces lo uso para crear una unión entre algunos datos:

typedef union { 
    struct { 
     int x, y, z; 
    }; 
    int elements[3]; 
} Point; 

De esta manera puedo fácilmente bucle sobre las coordenadas con elements sino también usar la forma corta x, y y z en lugar de elements[0] etc.

+0

Por supuesto, dicho uso podría ser un comportamiento indefinido. Solo porque todos lo hagan, no significa que sea válido. :) – unwind

3

Está perfectamente bien si solo quiere expresar que dos valores pertenecen juntos, pero nunca necesita la agrupación en particular como un tipo independiente.

Puede ser visto como un poco pedante y inclinado hacia el lado de la ingeniería, pero también puede verse como una gran forma de agregar claridad y estructura.

considerar:

struct State 
{ 
    Point position; 
    float health; 
    int level; 
    int lives_left; 
    int last_checkpoint; 
    char filename[32]; 
}; 

frente

struct State 
{ 
    struct 
    { 
    Point position; 
    float health; 
    int level; 
    int lives_left; 
    }    player; 
    struct { 
    int last_checkpoint; 
    char filename[32]; 
    }    level; 
} 

El último caso es un poco más difícil para sangrar con claridad, pero sí expresa de un modo muy claro que algunos de los valores están asociados con el jugador, y algunos con el nivel.

Cuestiones relacionadas