如何强制长整型为 4 字节

How to force long to be 4 byte

本文关键字:字节 长整型 何强制      更新时间:2023-10-16

>我有一个问题。当我编译我的项目时,我有sizof(long int) = 8sizof(int) = 4。但是,我也需要sizeof(long int) 4 岁。有没有办法做到这一点?问题是我有很多巨大的 int 数组,需要将它们分配给长 int 数组。如果我强制转换所有数组(具体来说,这意味着转换数组的每个条目),这将导致很多时间。

您不能在 LP64 平台(或陌生平台)上强制内置long int类型为 4 字节长。

但是,您可以使用 <stdint.h> 中的类型来保证变量的确切大小。

在您的情况下,您需要int32_tuint32_t作为您的类型,具体取决于您是否需要/想要符号位。

您可以告诉编译器您的目标平台,或者使用编译器特定的命令告诉编译器变量的大小。

另一种方法是使用宏并根据您的平台定义它:

#if PLATFORM_USES_8_BYTE_LONG
#define MY_LONG_INT int32_t
#else
#define MY_LONG_INT long int
#endif

首选方法是为目标体系结构设置编译器。 许多编译器都有大量预定义的体系结构可供选择。