这似乎是一个简单的问题,但我无法通过 Stack Overflow 搜索或 Google 找到它。一个类型后跟一个_t意思是什么?如
_t
int_t anInt;
我在 C 代码中看到了很多旨在密切处理硬件的情况——不禁认为它们是相关的。
正如 Douglas Mayle 所指出的,它基本上表示一个类型名称。因此,不建议您使用 ‘ _t‘ 结束变量或函数名称,因为这可能会引起一些混乱。此外size_t,C89 标准还定义了wchar_t、off_t、ptrdiff_t,可能还有一些我已经忘记的其他内容。C99 标准定义了很多额外的类型,例如uintptr_t, intmax_t, int8_t, uint_least16_t, uint_fast32_t, 等等。这些新类型是正式定义的,<stdint.h>但大多数情况下您会使用<inttypes.h>which(通常用于标准 C 头文件)包括<stdint.h>. 它 ( <inttypes.h>) 还定义了与printf()and一起使用的宏scanf()。
size_t
wchar_t
off_t
ptrdiff_t
uintptr_t
intmax_t
int8_t
uint_least16_t
uint_fast32_t
<stdint.h>
<inttypes.h>
printf()
scanf()
正如 Matt Curtis 所指出的,后缀中的编译器没有意义;这是一个以人为本的公约。
但是,您还应该注意,POSIX定义了许多以 ‘ ‘ 结尾的额外类型名称_t,并为实现 保留了后缀 。这意味着,如果您正在使用与 POSIX 相关的系统,那么使用约定定义您自己的类型名称是不明智的。我工作的系统已经做到了(超过 20 年);我们经常被定义与我们定义的名称相同的类型的系统绊倒。