Dav*_*eri 0 c posix reserved-words
我所知道的:
下划线('_')和所有标识符,无论使用以两个下划线开头,还是下划线后跟大写字母都是保留名称
在Posix中:以"_t"结尾的名称保留用于其他类型名称.
另外:头文件sys/stat.h保留以'st_'和'S_'为前缀的名称.
我们可以使用"t_whatever"(例如t_node)来定义我们自己的类型吗?
是的,您当然可以将其t_用作前缀,而不是任何预留空间.
我个人不建议这样做,但这主要是因为我不相信在很多情况下,有一个前缀来使类型名称更明显是一个类型名称是一个胜利.
我看不出来
t_node head;
Run Code Online (Sandbox Code Playgroud)
比...更好
node head;
Run Code Online (Sandbox Code Playgroud)
事实上,我认为后者更具可读性.在我看来,如果一个单词是C中的类型或变量名,你会立即从使用中看到这种情况.
一个反对意见可能是在使用时可能不清楚sizeof,例如考虑动态分配新节点.许多人会这样写:
t_node *head = malloc(sizeof(t_node));
Run Code Online (Sandbox Code Playgroud)
但我非常反对这种用法; 我认为最好避免sizeof尽可能地将类型名称移交,而是使用变量,从而将大小"锁定"到目标类型,这是一件好事:
node *head = malloc(sizeof *head);
Run Code Online (Sandbox Code Playgroud)
此外,像往常一样,请注意我永远不会完全像那样编写第一个示例,因为我认为它sizeof看起来像一个函数.我总有一个空间:
t_node *head = malloc(sizeof (t_node));
Run Code Online (Sandbox Code Playgroud)