在结构中定义匿名结构有什么用处?什么时候应该使用这个概念?在结构中声明匿名结构有什么用处?
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