我有问题。当我编译项目时,我有sizof(long int) = 8
和sizof(int) = 4
。但是,我需要sizeof(long int)
为4。有没有办法做到这一点?
问题是我有很多巨大的int数组,需要将它们设置为long int数组。如果我转换所有数组(特别是这意味着,转换数组的每个条目)会导致很多时间。
答案 0 :(得分:6)
您无法在LP64平台(或陌生平台)上强制内置long int
类型为4个字节长。
但是,您可以使用<stdint.h>
中的类型来保证变量的确切大小。
在您的情况下,您需要int32_t
或uint32_t
作为您的类型,具体取决于您是否需要/想要一个符号位。
答案 1 :(得分:0)
您可以告诉编译器您所针对的平台,或者使用编译器特定的命令告诉编译器变量的大小。
另一种方法是使用宏并根据您的平台定义它:
#if PLATFORM_USES_8_BYTE_LONG
#define MY_LONG_INT int32_t
#else
#define MY_LONG_INT long int
#endif
首选方法是为目标体系结构设置编译器。许多编译器都有大量预定义的体系结构可供选择。