在C ++中定义与机器无关的数据类型

时间:2013-01-15 22:20:14

标签: c++

有办法做到这一点吗?

#if sizeof(int) == 4
typedef unsigned int Integer32;
#else
typedef unsigned long Integer32;
#endif

或者你只需​​要#define整数大小并编译不同的标题?

1 个答案:

答案 0 :(得分:1)

如果您需要完全尺寸,则可以使用intXX_tuintXX_t变体,其中XX为8,16,32或64.如果您需要的类型是至少某种尺寸,使用int_leastXX_tuint_leastXX_t;如果您需要快速,请使用int_fastXX_tuint_fastXX_t。你可以从<stdint.h>得到这些,这是C99的结果。如果你没有C99,那就更难了。您不能使用sizeof(int),因为预处理器不知道类型。因此,请使用INT_MAX(来自<limits.h>等来确定某个特定类型是否足够大,以满足您的需求。