0

我所知道的:

下划线 ('_') 和所有以两个下划线或下划线后跟大写字母开头的标识符(无论使用情况如何)都是保留名称

在 Posix 中:以 '_t' 结尾的名称保留用于其他类型名称。

另外:头文件 sys/stat.h 保留了前缀为“st_”和“S_”的名称。

我们可以使用“t_whatever”(例如 t_node)来定义我们自己的类型吗?

4

1 回答 1

8

是的,您当然可以t_用作前缀,它不在任何保留空间中。

就我个人而言,我不建议这样做,但这主要是因为我不相信在很多情况下,使用前缀来使类型名称更明显地成为类型名称是一种胜利。

我看不到那个

t_node head;

好于

node head;

事实上,我认为后者更具可读性。在我看来,如果一个词是 C 中的类型或变量名,您通常会立即从用法中看到这种情况。

一个反对意见可能是使用时可能不清楚sizeof,例如考虑动态分配一个新节点。很多人会这样写:

t_node *head = malloc(sizeof(t_node));

但我非常反对这种用法;我认为最好尽可能避免将类型名称交给sizeof,而是使用变量,从而将大小“锁定”到目标类型,这是一件好事:

node *head = malloc(sizeof *head);

另外,像往常一样,请注意我永远不会像那样写第一个示例,因为我认为它sizeof看起来像一个函数。我总是有一个空间:

t_node *head = malloc(sizeof (t_node));
于 2013-05-14T09:18:58.057 回答