【问题标题】:typedef struct and enum, why? [duplicate]typedef 结构和枚举,为什么? [复制]
【发布时间】:2011-07-06 01:44:48
【问题描述】:

可能的重复:
Purpose of struct, typedef struct, in C++
typedef struct vs struct definitions

在我维护的代码中,我经常看到以下内容:

typedef enum { blah, blah } Foo;
typedef struct { blah blah } Bar;

代替:

enum Foo { blah, blah };
struct Bar { blah blah };

我总是使用后者,这是我第一次看到前者。所以问题是为什么一个人会使用一种风格而不是另一种风格。有什么好处吗?它们在功能上是否相同?我相信他们是,但不是 100% 确定。

【问题讨论】:

    标签: c++ enums struct


    【解决方案1】:

    在 C++ 中这无关紧要。

    在 C 中,structs、enums 和 unions 位于不同的“命名空间”中,这意味着它们的名称可能与变量名称冲突。如果你说

    struct S { };
    

    所以你可以这样说

    struct S S;
    

    这意味着struct S 是数据类型,S 是变量名。你不能说

    S myStruct;
    

    在 C 中,如果 Sstruct(而不是类型名称),那么人们只是使用 typedef 来避免一直说 struct

    【讨论】:

    • enumunionstruct 有同样的问题。
    • 是的,我重新阅读了您的答案并意识到这一点,然后删除了我的评论。哎呀。谢谢!
    • @anio:哈哈好吧,没问题。
    【解决方案2】:

    它们是为了 C 兼容性。正常的

      struct Bar { blah, blah };
    

    与 C 不同;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-26
      • 2018-12-20
      • 2011-10-12
      • 2010-10-16
      • 1970-01-01
      • 2015-01-27
      • 2012-07-08
      • 1970-01-01
      相关资源
      最近更新 更多