在我最近的操作系统类中,我们定义了一堆这样的对象:

typedef struct someobj {
  ... stuff ...
} someobj_t;

我知道那很好。

问题在于,有时在给定的支持代码中,结构被称为struct someobj *some,有时也称为someobj_t *some。是否有实际/有用的理由以这两种不同的方式来引用结构,还是仅仅是风格上的差异?

最佳答案

假设我们正在询问以下代码(我在写问题时没有typedef,但我假设它应该在那里):

typedef struct someobj {
    // content
} someobj_t;

实际上,通常只需省略名称someobj并始终使用someobj_t就足够了。但是,当您希望结构引用自身时,会出现这种情况:
typedef struct someobj {
    struct someobj* next;
    // cannot say someobj_t* yet - typedef not complete
} someobj_t;

// and from now on, both struct someobj and`someobj_t are equivalent

关于c - C中的struct x vs x_t,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4383052/

10-11 22:12
查看更多