uint32_t,用于表示变量大小的int_t表示法

时间:2014-03-18 08:20:55

标签: c++ c coding-style notation

这个问题只是关于符号选择的原因。

prevent bugs,必须提及像

这样的可变大小
uint32_t VariableA;  // uint32_t has been type defined for architecture whose int size is 32 bit.
int16_t  VariableB;

而不是仅使用类型说明符,如

int VariableName;

这里的问题是为什么在uint32_t中使用_t而不是仅使用uint32。这个_t在哪里被附加在typedef中了?

3 个答案:

答案 0 :(得分:2)

这些名称取自POSIX规范,该规范在C和C ++标准化固定大小整数类型的名称之前被广泛使用。 POSIX使用将_t附加到大多数类型名称的约定。

答案 1 :(得分:1)

_t约定来自UNIX的早期。接下来,大多数(或所有)标量类型的别名和Posix中的许多struct类型都是这样命名的,有些类型甚至在C语言中标准化。

Posix还在C ++全局命名空间中保留所有以_t为后缀的名称(或者通常用于C)。

在我的知识中,C ++没有引入任何新的_t名称,并且最佳实践使用C ++标准库只会在std命名空间中引入名称。

在未来的某个时刻,预计/希望Posix将在posix命名空间中进行沙盒化。

在任何情况下,最佳做法是将所有接口typedef保留在您自己的命名空间中,一旦完成此操作,将别名命名为_t的标量类型就相当于合理的政策。好处是C ++通常对两个名称是否指的是真正不同的类型(但可能表现相似)或者它们实际上是同一事物的别名很敏感。 _t显然是一个简单的别名。

答案 2 :(得分:0)

_t基本上表示type名称。因此,使用_t结束变量或函数名称是不明智的,因为它可能会导致一些混淆甚至未定义的行为(取决于编译器等)。

<强>附录

POSIX系统定义了许多以_t结尾的额外类型名称,并为实现保留了后缀。因此,在处理与POSIX相关的系统时,使用约定定义自己的类型名称是不明智的,可能导致未定义的行为