如何在C中正确命名结构体和类型?

k97glaaz  于 2022-12-03  发布在  其他
关注(0)|答案(1)|浏览(112)

我试着找出如何正确地命名一个结构体和类型。我总是发现什么不应该做(“__name”,“_Name”),所以我总是这样做:

typedef struct something_t {
    ...
} something_t;
// or
typedef struct something_that_should_not_be_copied_t {
    ...
} something_that_should_not_be_copied_t[1];

但是我认为这并不完全正确,因为_t是为类型名保留的,所以“struct something_t”是不允许的。我也听说过,“struct something_s”是正确的,但是我从来没有在任何代码库中看到过它。所以,请告诉我,在一个正常的程序和库中,正确的方法是什么。

fgw7neuy

fgw7neuy1#

当使用typedef struct { } name;时,你甚至不需要声明一个struct标签。只有当你在做一些特殊的事情,比如一个自引用的struct或者一个“不透明类型”的实现时,才需要这样做。所以最常见的解决方案就是省略struct标签。
struct标记和typedef名称存在于不同的命名空间中,因此就C语言而言,如果您愿意,可以将它们命名为相同的名称。
据我所知,没有命名struct标签的约定。然而,一些编码标准,如Linux内核,出于完全主观的原因,鼓励struct tag而不是typedef。
_t在类型的末尾 * 是 * 一个常见的类型命名约定。尽管POSIX标准禁止使用,但使用它是可以的。
根据您编写的应用程序的类型,您可以遵循Linux内核编码风格或POSIX,也可以完全忽略它们。

相关问题