【问题标题】:Is t_whatever a reserved name in the C standard or POSIX?t_whatever 是 C 标准或 POSIX 中的保留名称吗?
【发布时间】:2013-05-14 09:14:04
【问题描述】:
据我所知:
一个下划线('_')和所有标识符,无论使用哪种开头
带有两个下划线或一个下划线后跟一个大写字母
字母是保留名称
在 Posix 中:以“_t”结尾的名称保留用于其他类型
名字。
另外:头文件 sys/stat.h 保留名称前缀
“st_”和“S_”。
我们可以使用“t_whatever”(例如 t_node)来定义我们自己的类型吗?
【问题讨论】:
标签:
c
posix
reserved-words
【解决方案1】:
是的,您当然可以使用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));