2010-05-03 58 views

回答

8

我有时用它来一些数据之间创建一个联盟:

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

这样我可以很容易地遍历与elements坐标也用简短形式xyz,而不是elements[0]等。

+0

当然,这种用法很可能是不确定的行为。只是因为每个人都这样做,并不意味着它是有效的。 :) – unwind 2013-01-18 14:17:01

3

这是完全正常的,如果你只是想表达两个值属于一起,但从来没有需要特别的分组作为一个独立的类型。

这可能会被视为有点pedandic和对事物的过度工程侧倾斜,但它也可以被看作是一个大的方式来增加清晰度和结构。

考虑:

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

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

最后一种情况是有点难以清楚地缩进,但它确实在一个非常明确的方式表达某些值与关联球员,和一些与水平。