我写一个程序将数据存储到一个文件中的每个32位(即4个字节在一个时间)的单元上。 我写的代码,在64位的窗口系统,但我使用的编译器是32位(的mingw32)。 在当前的系统中,一个INT长大小是相同的,32位(4字节)。 我当前通过与G ++重新编译代码移植到其它系统(不改变代码)。 然而,我发现,int的长度或长是不同的,这取决于系统。 是,任何方式(如在头文件使用宏)来确定的整数的大小,以便决定是否int或长应作为在代码的数据类型? 我必须重新编译代码在4种不同类型的系统,这是真的,如果我修改代码来为每个系统4级不同的副本头疼。
Answer 1:
什么,你想要做的是使用标准的类型,如int32_t
。 这种类型总是32位。 我目前在便携式数据库(Berkeley数据库),用于跨系统兼容性使用这些类型。
见这里的所有的人。
包括stdint.h获得这些定义。
Answer 2:
这与C99提供一个典型的解决方案的常见问题。
该<stdint.h>
头定义一组提供特定的尺寸,最快的尺寸和最小尺寸的整数类型。 解决的时候正是你的问题这是非常有用的。
这是你正在使用的mingw32一件好事,因为不幸的是,我最后一次检查微软没有提供stdint.h与他们的API。 如果有人确实需要这种针对Windows,有一个开源版本,请参见: http://code.google.com/p/msinttypes/
Answer 3:
您可以使用sizeof(int)以确定该整数的大小。
如果你需要一个特定的大小,你应该使用int32_t(或的int64_t)从stdint.h
Answer 4:
IMO的问题,最好的办法是不使用int
, long long
,等等,而是独立于平台的类型别名: int8_t
, int16_t
, int32_t
, int64_t
等。
只在定义<stdint.h>
文章来源: dynamically determine the type of integer based on the system (c++)