如何强制长4字节

时间:2014-12-27 13:13:29

标签: c++ arrays int long-integer sizeof

我有问题。当我编译项目时,我有sizof(long int) = 8sizof(int) = 4。但是,我需要sizeof(long int)为4。有没有办法做到这一点? 问题是我有很多巨大的int数组,需要将它们设置为long int数组。如果我转换所有数组(特别是这意味着,转换数组的每个条目)会导致很多时间。

2 个答案:

答案 0 :(得分:6)

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

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

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

答案 1 :(得分:0)

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

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

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

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