在結構中定義匿名結構有什麼用處?什麼時候應該使用這個概念?在結構中聲明匿名結構有什麼用處?
8
A
回答
8
我有時用它來一些數據之間創建一個聯盟:
typedef union {
struct {
int x, y, z;
};
int elements[3];
} Point;
這樣我可以很容易地遍歷與elements
座標也用簡短形式x
,y
和z
,而不是elements[0]
等。
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;
}
最後一種情況是有點難以清楚地縮進,但它確實在一個非常明確的方式表達某些值與關聯球員,和一些與水平。
相關問題
- 1. C:如何聲明匿名結構
- 2. 是否有可能在Rust中聲明本地匿名結構?
- 3. 匿名結構,結構{} {}和{}
- 4. 在結構中聲明結構?
- 5. 聲明結構
- 6. 聲明結構
- 7. 結構聲明
- 8. 在C中聲明結構
- 9. C11結構繼承與匿名結構
- 10. C結構聲明
- 11. const結構聲明
- 12. C中的結構聲明
- 13. C中的結構聲明
- 14. 在線聲明類/結構
- 15. 聲明其在結構
- 16. 無法在c中的結構中聲明結構成員
- 17. 匿名結構指針
- 18. 匿名結構與ANSI C
- 19. 初始化匿名結構
- 20. C++:實現匿名結構
- 21. 古典結構與原型結構相比有什麼好處?
- 22. 如何使用具有匿名結構的匿名C++聯合
- 23. 如何聲明內部有大型結構數組的結構
- 24. 爲什麼不在Android NDK中編譯結構聲明?
- 25. Rust靜態結構聲明
- 26. 特里樹結構聲明
- 27. 聲明一個類/結構
- 28. 結構聲明範圍
- 29. 聲明一個結構棧
- 30. c結構聲明行爲
當然,這種用法很可能是不確定的行爲。只是因爲每個人都這樣做,並不意味着它是有效的。 :) – unwind 2013-01-18 14:17:01