GCC 中有固定大小的整数吗?
在 MSVC++ 编译器上,可以对具有特定大小的整数使用 __int8
、__int16
、__int32
和类似类型。 这对于需要使用低级数据结构(例如自定义文件格式、硬件控制数据结构等)的应用程序非常有用。
我可以在 GCC 编译器上使用类似的等效工具吗?
On the MSVC++ compiler, one can use the __int8
, __int16
, __int32
and similar types for integers with specific sizes. This is extremely useful for applications which need to work with low-level data structures like custom file formats, hardware control data structures and the like.
Is there a similar equivalent I can use on the GCC compiler?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
ISO 标准 C,从 C99 标准开始,添加了定义这些类型的标准头
:我一直使用这些类型。
仅当实现支持具有适当大小和特征的预定义类型(大多数情况下)时,才定义这些类型。
还定义了名称格式为(u)int_leastN_t
的类型(具有至少指定宽度的类型)和(u)int_fastN_t
(至少具有指定宽度的“最快”类型); 这些类型是强制性的。如果您使用的是不支持
的旧实现,您可以推出自己的实现; 一种实现是 Doug Gwyn 的“q8”。ISO standard C, starting with the C99 standard, adds the standard header
<stdint.h>
that defines these:I use these types all the time.
These types are defined only if the implementation supports predefined types with the appropriate sizes and characteristics (which most do).
<stdint.h>
also defines types with names of the form(u)int_leastN_t
(types that have at least the specified width) and(u)int_fastN_t
(the "fastest" types that have at least the specified width); these types are mandatory.If you're using an old implementation that doesn't support
<stdint.h>
, you can roll your own; one implementation is Doug Gwyn's "q8".