Прекрасно, если вы просто хотите выразить, что два значения принадлежат друг другу, но никогда не нуждаетесь в конкретной группировке как отдельный тип.
Это может показаться немного педантичным и склонным к чрезмерной инженерной стороне вещей, но это также может быть замечено как большой способ добавить ясности и структуры.
Рассмотрим:
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;
}
Последний случай немного сложнее четко обозначить, но он очень четко выражает, что некоторые значения связаны с игроком, а некоторые - с уровнем.