代码之家  ›  专栏  ›  技术社区  ›  Jay

在结构中声明匿名结构的用途是什么?

  •  8
  • Jay  · 技术社区  · 14 年前

    在一个结构中定义一个匿名结构有什么用?什么时候应该使用这个概念?

    2 回复  |  直到 14 年前
        1
  •  8
  •   Andreas Brinck    14 年前

    我有时使用它在一些数据之间创建联合:

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

    这样我可以很容易地用 elements 但也要使用较短的形式 x , y z 而不是 elements[0] 等。

        2
  •  3
  •   unwind    14 年前

    如果您只想表示两个值属于一起,但不需要将特定的分组作为独立类型,那就太好了。

    它可能被视为有点迂腐,倾向于工程方面的事情,但也可以被视为一个增加清晰和结构的大方法。

    考虑:

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

    最后一个例子有点难以清晰地缩进,但它确实以非常清晰的方式表示了一些值与播放器相关,一些值与级别相关。