104

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

在我的应用程序源代码中包含这些类型的最佳方式是什么?

4

4 回答 4

154

C99stdint.h定义了这些:

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

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

  • int64_t
  • uint64_t

还有各种其他整数类型定义stdint.h

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

uint32uint64即没有_t后缀)可能是特定于应用程序的。

于 2011-05-16T05:14:33.747 回答
12

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

于 2011-05-16T04:47:40.413 回答
2

如果您使用的是 C99,只需包含stdint.h. 顺便说一句,如果处理器支持它们,64 位类型就在那里。

于 2011-05-16T06:19:39.880 回答
0

提问者实际上询问的是 int16 (等)而不是(丑陋的) int16_t (等)。

没有标准头文件 - Linux 的 /usr/include/ 文件夹中也没有任何标准头文件在没有“_t”的情况下定义它们。

于 2018-04-06T14:05:59.737 回答