2010-05-03 61 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; 
} 

最後一種情況是有點難以清楚地縮進,但它確實在一個非常明確的方式表達某些值與關聯球員,和一些與水平。