【发布时间】:2011-03-14 14:44:36
【问题描述】:
我很困惑何时应该将尾随 _t 添加到 typedef'ed 类型?
例如,我应该这样做:
typedef struct image image_t;
或者这个:
typedef struct image image;
一般规则是什么?
另一个例子,我应该这样做:
typdef enum { ARRAY_CLOSED, ARRAY_OPEN, ARRAY_HALFOPEN } array_type_t;
或者这个:
typdef enum { ARRAY_CLOSED, ARRAY_OPEN, ARRAY_HALFOPEN } array_type;
请赐教。
谢谢,博达·赛多。
【问题讨论】:
-
从不。以
_t结尾的类型名称被某些标准保留(不确定是哪个)。不管你做什么,不要做_type_t。选择_type或_t(或其他),但请不要堆叠它们。这简直是愚蠢的。 -
@Billy - 搜索了一下,我认为它是 POSIX。向下滚动,James McNellis 击败了我。
-
@Billy @Chris:我没有参考链接,抱歉;限制和引用可以在What are the rules about using an underscore in a C++ identifier?的答案中找到
-
以
_t结尾的标识符在POSIX 中保留:opengroup.org/onlinepubs/9699919799/functions/V2_chap02.html。并不是说我很在意(我经常输入以_t结尾的名字)。 -
@MichaelBurr 那篇文章说“实现可能会在下表中显示的标头中添加符号,前提是这些符号的标识符:[...] 以表中保留后缀表示的字符串结尾并且不要使用保留的前缀 posix_、POSIX_ 或 POSIX,只要保留的后缀位于名称中被实施认为重要的部分。”所以表格是说你可以使用
_t来定义在任何标题中的类型。