Каково использование объявления анонимных структур в структуре?

Что использование определения является анонимной структурой в структуре? Когда это понятие должно использоваться?

8
задан Jay 3 May 2010 в 09:48
поделиться

2 ответа

Иногда я использую его для создания объединения некоторых данных:

typedef union {
    struct {
        int x, y, z;
    };
    int elements[3];
} Point;

Так я могу легко перебирать координаты с помощью elements, а также использовать более короткую форму x, y и z вместо elements[0] и т.д.

8
ответ дан 5 December 2019 в 15:21
поделиться

Это совершенно нормально, если вы просто хотите выразить, что два значения принадлежат друг другу, но никогда не нуждаетесь в конкретной группировке как отдельном типе.

Это может показаться немного педантичным и склоняющимся к чрезмерной инженерной стороне вещей, но это также можно рассматривать как большой способ добавить ясности и структуры.

Рассмотрим:

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;
}

В последнем случае немного сложнее сделать четкий отступ, но он очень четко выражает, что некоторые значения связаны с игроком, а некоторые - с уровнем.

3
ответ дан 5 December 2019 в 15:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: