是否在任何stdlib头中定义了uint32,int32,uint64,int64等类型?

phi*_*lix 89 c std

我经常看到使用uint32,uint64等类型的源代码,我想知道它们是应该由程序员在应用程序代码中定义,还是在标准的lib头文件中定义.

在我的应用程序源代码上使用这些类型的最佳方法是什么?

mu *_*ort 126

C99 stdint.h定义了这些:

  • int8_t
  • int16_t
  • int32_t
  • uint8_t
  • uint16_t
  • uint32_t

而且,如果架构支持它们:

  • int64_t
  • uint64_t

还有各种其他整数typedef stdint.h.

如果您在没有C99环境的情况下陷入困境,那么您应该提供自己的typedef并使用C99环境.

uint32uint64(即不带_t后缀)可能是特定应用.

  • 这个答案是对的.只有在实现中存在该大小的精确宽度类型(无填充)时,才能使用上述所有内容.但是,即使不是,'NN` 8,16,32和64**的类型`int_leastNN_t`和`uint_leastNN_t`必须始终存在**.C99不允许在没有至少64位的整数类型的情况下实现,因为"long long"需要至少那么大. (15认同)

GWW*_*GWW 10

这些整数类型都在中定义 stdint.h

  • 查看文件,我在评论中找到了"ISO C99:7.18整数类型<stdint.h>".如果您尊重C99标准,我想你会得到`stdint.h`. (3认同)