【问题标题】:Is there any reason not to typedef a structure? [duplicate]有什么理由不键入结构吗? [复制]
【发布时间】:2013-08-12 20:20:39
【问题描述】:

关于结构,有什么理由不使用typedef

喜欢:

typedef struct{
    int member1;
    unsigned long member2;
    char *member3;
} myType;

代替:

struct myType{
    int member1;
    unsigned long member2;
    char *member3;
};

【问题讨论】:

  • 个人选择。 typedef 少打字

标签: c struct typedef


【解决方案1】:

Typedef 会使调试变得困难,因为 myType 的实例将显示为 anonymous type,除非调试器足够聪明,可以加入这些点。为了安全起见,我更喜欢两者都做:

typedef struct tag_myType {
    ⋮
} myType;

但是,如果我不得不放弃其中一个,出于同样的原因,我愿意到处写 struct myType

【讨论】:

  • 请注意,_t 在技术上使其成为保留名称。这也是不必要的; typedef struct myType { ... } myType; 工作得很好。
  • @OliCharlesworth:谢谢,我不知道(讽刺的是,我通常使用tag_…;我不知道我为什么在这里更改它)。虽然我知道您可以使用相同的名称,但我一直不愿意这样做。不过,我必须承认,这只不过是一种模糊的感觉,即这不是一个好主意。
【解决方案2】:

typedef关键字可以写

myType x;

如果没有,你必须输入:

struct myType x;

因此,您输入的内容更少,如果您编写大型程序,这是必要的。

其次,有些人认为,如果您使用 typedef,您可以对代码用户隐藏实现。例如,您可以使用 size_t 类型,而不必知道它是如何定义的。

【讨论】:

    猜你喜欢
    • 2015-07-24
    • 2017-04-22
    • 2018-02-16
    • 1970-01-01
    • 2010-09-20
    • 1970-01-01
    • 1970-01-01
    • 2017-08-29
    • 2011-11-23
    相关资源
    最近更新 更多