Какая польза от объявления анонимных структур внутри структуры? - PullRequest
8 голосов
/ 03 мая 2010

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

Ответы [ 2 ]

8 голосов
/ 03 мая 2010

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

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

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

3 голосов
/ 03 мая 2010

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

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

Рассмотрим:

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...