C 两个可能的typedef结构语法选项,有什么不同吗?

C 两个可能的typedef结构语法选项,有什么不同吗?,c,struct,typedef,C,Struct,Typedef,我想为链表定义一个结构, 在接下来的两个选项中, 主题之一更好?两个都能用吗?有什么不同,你会用哪一个 typedef struct suppliers * SUP; typedef struct suppliers{ int num; int moths; SUP next; } su; 其他选择是: typedef supplier *suppliers typedef struct supplier{ int num; int moths;

我想为链表定义一个结构, 在接下来的两个选项中, 主题之一更好?两个都能用吗?有什么不同,你会用哪一个

typedef struct suppliers * SUP;
    typedef struct suppliers{
    int num;
    int moths;
    SUP next;
} su;
其他选择是:

typedef supplier *suppliers
typedef struct supplier{
    int num;
    int moths;
    struct supplier *next;
} supplier;
我的首选版本:

struct supplier{
    int num;
    int moths;
    struct supplier *next;
};

struct、enum或union上的typedef正在隐藏有用的信息。

第二个选项将无法编译。解决你的问题。这两个都有病理命名,也许你应该在一个节点中封装你想要的任何东西template@SteveCox什么是C语言中的模板?它对typedef指针没有多大意义。为什么会有这种奇怪的缩进?第一个
结构供应商是不必要的。尽管如此,+1.是的,为什么要转发decl?@JosephQuinsey少数派以什么方式?@glglgl:我同意jag的说法,“struct、enum或union上的typedef正在隐藏有用的信息”,例外情况是在应用程序中到处使用少量类型,或者当您有意隐藏信息时,在不透明的数据类型中,或者当您必须编写类似C++的代码时。但是,从SO上发布的代码示例或我的同事编写的代码示例来看,大多数人喜欢键入def所有内容。@JosephQuinsey Ok。我只是不清楚过度使用
typedef
的代码与不使用的代码之间的关系。