Что использование определения является анонимной структурой в структуре? Когда это понятие должно использоваться?
Иногда я использую его для создания объединения некоторых данных:
typedef union {
struct {
int x, y, z;
};
int elements[3];
} Point;
Так я могу легко перебирать координаты с помощью elements
, а также использовать более короткую форму x
, y
и z
вместо elements[0]
и т.д.
Это совершенно нормально, если вы просто хотите выразить, что два значения принадлежат друг другу, но никогда не нуждаетесь в конкретной группировке как отдельном типе.
Это может показаться немного педантичным и склоняющимся к чрезмерной инженерной стороне вещей, но это также можно рассматривать как большой способ добавить ясности и структуры.
Рассмотрим:
struct State
{
Point position;
float health;
int level;
int lives_left;
int last_checkpoint;
char filename[32];
};
versus
struct State
{
struct
{
Point position;
float health;
int level;
int lives_left;
} player;
struct {
int last_checkpoint;
char filename[32];
} level;
}
В последнем случае немного сложнее сделать четкий отступ, но он очень четко выражает, что некоторые значения связаны с игроком, а некоторые - с уровнем.