在结构中定义匿名结构有什么用处?什么时候应该使用这个概念?在结构中声明匿名结构有什么用处?
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;
}
最后一种情况是有点难以清楚地缩进,但它确实在一个非常明确的方式表达某些值与关联球员,和一些与水平。
当然,这种用法很可能是不确定的行为。只是因为每个人都这样做,并不意味着它是有效的。 :) – unwind 2013-01-18 14:17:01