据我所知:
下划线('_')和所有标识符,无论使用何种开头 带有两个下划线或下划线后跟一个首都 字母是保留名称
在Posix中:以“_t”结尾的名称保留用于其他类型 名。
另外:头文件sys / stat.h保留带有前缀的名称 'st_'和'S _'。
我们可以使用“t_whatever”(例如t_node)来定义我们自己的类型吗?
答案 0 :(得分: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));