是否在任何 stdlib 标头中定义了像 uint32、int32、uint64、int64 这样的类型?
我经常看到使用 uint32、uint64 等类型的源代码,我想知道它们是否应该由程序员在应用程序代码中定义,或者是否在标准 lib 标头中定义。
在我的应用程序源代码中使用这些类型的最佳方法是什么?
I often see source code using types like uint32, uint64 and I wonder if they should be defined by the programmer in the application code or if they are defined in a standard lib header.
What's the best way to have these types on my application source code?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
C99
stdint.h
定义了这些:int8_t
int16_t
int32_t
uint8_t
uint16_t
uint32_t
并且,如果架构支持它们:
int64_t
uint64_t
中还有各种其他整数类型定义stdint.h 也是如此。
如果您在没有 C99 环境的情况下陷入困境,那么您可能应该提供自己的 typedef 并无论如何使用 C99 的 typedef。
uint32
和uint64
(即没有_t
后缀)可能是特定于应用程序的。The C99
stdint.h
defines these:int8_t
int16_t
int32_t
uint8_t
uint16_t
uint32_t
And, if the architecture supports them:
int64_t
uint64_t
There are various other integer typedefs in
stdint.h
as well.If you're stuck without a C99 environment then you should probably supply your own typedefs and use the C99 ones anyway.
The
uint32
anduint64
(i.e. without the_t
suffix) are probably application specific.这些整数类型都在
stdint.h
中定义Those integer types are all defined in
stdint.h
如果您使用的是 C99,只需包含
stdint.h
。顺便说一句,64 位类型是存在的,前提是处理器支持它们。If you are using C99 just include
stdint.h
. BTW, the 64bit types are there iff the processor supports them.提问者实际上询问的是 int16 (等)而不是(丑陋的)int16_t (等)。
没有标准头文件 - Linux 的 /usr/include/ 文件夹中也没有任何定义不带“_t”的头文件。
The questioner actually asked about int16 (etc) rather than (ugly) int16_t (etc).
There are no standard headers - nor any in Linux's /usr/include/ folder that define them without the "_t".