在结构中定义匿名结构有什么用?什么时候应该使用这个概念?
答案 0 :(得分:8)
我有时会用它来创建一些数据之间的联合:
typedef union {
struct {
int x, y, z;
};
int elements[3];
} Point;
通过这种方式,我可以使用elements
轻松遍历坐标,但也可以使用较短的格式x
,y
和z
代替elements[0]
等。
答案 1 :(得分:3)
如果您只想表达两个值属于一起,但绝不需要将特定分组作为独立类型,那就完全没了问题。
它可能被视为有点迂腐,倾向于过度工程的一面,但它也可以被视为增加清晰度和结构的重要方法。
考虑:
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;
}
最后一个案例有点难以缩进,但它确实以非常明确的方式表达了某些值与玩家相关联,而某些值与该级别相关联。