为什么在*struct定义之后使用typedef*?

Gui*_*i13 12 c struct typedef

这两种风格:

struct _something
{
   ...
};
typedef struct _something someting;
Run Code Online (Sandbox Code Playgroud)

那种风​​格:

typedef struct _something
{
  ...
} something;
Run Code Online (Sandbox Code Playgroud)

是C中正确的typedef声明.
请注意,文件中存在结构声明是故意的:我需要访问其他地方的结构的内部组件.

第一个声明的一个缺点是,当您使用任何IDE时,自动"跳转到声明"通常会将您引导到typedef struct _something someting;而不是直接为您提供真实的结构定义.

在第二种方法中,您可以直接进入结构定义.

是否有人会使用第一种方法?
我正在处理的代码充满了这些......
维护者只是一个坏/好的习惯?

Jus*_*ier 3

该讨论主题很好地概述了该主题,并强调了使用第一种样式的重要原因:

这种风格将类型定义(这不是typedef所做的)与类型名称同义词创建(这就是typedef 所做的)分开,并保留类型名称和类型同义词之间的强对应关系,而不存在两者使用相同名称的缺点(这可能会造成混淆)一些调试器,无论如何对于 grep 来说都是一个痛苦)。