【问题标题】:defining typedef for a struct for 2 times为结构定义 typedef 2 次
【发布时间】:2017-01-31 19:07:47
【问题描述】:

我在代码中看到这样的内容:

struct listnode{
char data;
struct listnode *nextptr;}

typedef struct listnode LISTNODE;

typedef LISTNODE *listnodeptr;

那他为什么用了2次typedef???

【问题讨论】:

  • 一个用于struct listode,另一个用于struct listnode* ?
  • 1) 使用 markdown 正确格式化代码。阅读常见问题解答。 2)因为这是typedefs 指针的错误代码。出于可读性的原因,这是一个严格的不。 3) 除了宏或枚举常量之外,不要使用全大写的名称。 4) 阅读 C 书籍并找到更好的代码 sn-ps 资源。

标签: c struct typedef


【解决方案1】:

第一个 typedef 为结构本身声明了一个别名

typedef struct listnode LISTNODE;
        ^^^^^^^^^^^^^^^

第二个 typedef 声明结构类型对象指针的别名。

typedef LISTNODE * listnodeptr;
        ^^^^^^^^^^

是否只使用一个的多个 typedef 是风格问题。

这三个声明可以合并为一个声明

typedef struct listnode{
char data;
struct listnode *nextptr;
} LISTNODE, *listnodeptr;

【讨论】:

    【解决方案2】:

    这里的两个typedefs 不是重复的,它们是两个不同类型的别名。

    • typedef struct listnode LISTNODE; 创建类型 LISTNODE,它是 struct listnode 的别名
    • typedef LISTNODE *listnodeptr; 创建类型 listnodeptr,它是 LISTNODE * 的别名,即 struct listnode *

    【讨论】:

      猜你喜欢
      • 2014-02-06
      • 2013-06-13
      • 2021-04-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多