我试着找出如何正确地命名一个结构体和类型。我总是发现什么不应该做(“__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”是正确的,但是我从来没有在任何代码库中看到过它。所以,请告诉我,在一个正常的程序和库中,正确的方法是什么。
1条答案
按热度按时间fgw7neuy1#
当使用
typedef struct { } name;
时,你甚至不需要声明一个struct标签。只有当你在做一些特殊的事情,比如一个自引用的struct或者一个“不透明类型”的实现时,才需要这样做。所以最常见的解决方案就是省略struct标签。struct标记和
typedef
名称存在于不同的命名空间中,因此就C语言而言,如果您愿意,可以将它们命名为相同的名称。据我所知,没有命名struct标签的约定。然而,一些编码标准,如Linux内核,出于完全主观的原因,鼓励
struct tag
而不是typedef。_t
在类型的末尾 * 是 * 一个常见的类型命名约定。尽管POSIX标准禁止使用,但使用它是可以的。根据您编写的应用程序的类型,您可以遵循Linux内核编码风格或POSIX,也可以完全忽略它们。