这似乎是一个简单的问题,但我用Stack Overflow搜索或谷歌找不到它。类型后面跟着_t是什么意思?如

int_t anInt;

我在C代码中经常看到这种情况,这些代码是为了紧密地处理硬件——我忍不住认为它们是相关的。


当前回答

如果您正在处理硬件接口代码,您正在查看的代码的作者可能已经将int_t定义为一个特定大小的整数。C标准没有为int类型分配特定的大小(这可能取决于您的编译器和目标平台),使用特定的int_t类型可以避免可移植性问题。

对于硬件接口代码,这是一个特别重要的考虑因素,这可能就是为什么您第一次注意到这里的约定。

其他回答

例如,在C99中,/usr/include/ stdt .h:

typedef unsigned char           uint8_t;
typedef unsigned short int      uint16_t;
#ifndef __uint32_t_defined
typedef unsigned int            uint32_t;
# define __uint32_t_defined
#endif
#if __WORDSIZE == 64
typedef unsigned long int       uint64_t;
#else
__extension__
typedef unsigned long long int  uint64_t;
#endif

_t总是表示由typedef定义。

意思是类型。Size_t是大小类型。

这只是一个惯例,意思是“类型”。它对编译器没有任何特殊意义。

这是一种用于命名数据类型的约定,例如使用typedef:


typedef struct {
  char* model;
  int year;
...
} car_t;

如果您正在处理硬件接口代码,您正在查看的代码的作者可能已经将int_t定义为一个特定大小的整数。C标准没有为int类型分配特定的大小(这可能取决于您的编译器和目标平台),使用特定的int_t类型可以避免可移植性问题。

对于硬件接口代码,这是一个特别重要的考虑因素,这可能就是为什么您第一次注意到这里的约定。