在创建typedef&n struct时指定两种类型有什么好处?

时间:2015-04-09 23:06:57

标签: c struct coding-style typedef c11

示例1:

struct T{
    int a;
};

创建类型 struct T


示例2:

typedef struct {
    int a;
} T;

创建 T

类型

示例3:

typedef struct T{
    int a;
} T;

创建类型 struct T T


我倾向于经常看到示例3,我不确定为什么有人会在示例1或2中选择它。

  • 这样做会有什么好处吗?
  • 是否有理由让人们为兼容性而这样做?
  • 对于某种范围界定的原因是否有利?

我想避免使用示例3 方式,因为它对类型的维护较少,并且它限制了多种声明相同内容的方式。但是,如果这种“双重命名”技术有好处,我会重新考虑它。

1 个答案:

答案 0 :(得分:4)

  

我倾向于经常看到例子3,我不确定为什么会这样   选择例子1或2。

     
      
  • 这样做会有什么好处吗?
  •   

我认为这个事实是不言而喻的,即繁琐的代码很麻烦。每个人都愿意写

T object;

而不是

struct T object;

然而,一个硬核C编码器可能会认为嘿,T是一个结构,更好地称之为,它也减轻了你混淆的机会。做什么时

struct {int a; } T; typedef int T; 
  
      
  • 人们是否有理由这样做兼容?
  •   

是。这样,C中的结构可以像在C ++中一样使用。

  
      
  • 对于某种范围界定的原因是否有利?
  •   
不,不是我知道的。