This seems like a simple question, but I can’t find it with the Stack Overflow search or Google. What does a type followed by a _t mean? Such as
int_t anInt;
I see it a lot in C code meant to deal closely with hardware—I can’t help but think that they’re related.
As Douglas Mayle noted, it basically denotes a type name. Consequently, you would be ill-advised to end variable or function names with ‘
_t‘ since it could cause some confusion. As well assize_t, the C89 standard defineswchar_t,off_t,ptrdiff_t, and probably some others I’ve forgotten. The C99 standard defines a lot of extra types, such asuintptr_t,intmax_t,int8_t,uint_least16_t,uint_fast32_t, and so on. These new types are formally defined in<stdint.h>but most often you will use<inttypes.h>which (unusually for standard C headers) includes<stdint.h>. It (<inttypes.h>) also defines macros for use with theprintf()andscanf().As Matt Curtis noted, there is no significance to the compiler in the suffix; it is a human-oriented convention.
However, you should also note that POSIX defines a lot of extra type names ending in ‘
_t‘, and reserves the suffix for the implementation. That means that if you are working on POSIX-related systems, defining your own type names with the convention is ill-advised. The system I work on has done it (for more than 20 years); we regularly get tripped up by systems defining types with the same name as we define.