有没有办法做到这一点?
#if sizeof(int) == 4
typedef unsigned int Integer32;
#else
typedef unsigned long Integer32;
#endif
还是您必须只#define 整数大小并编译不同的标头?
有没有办法做到这一点?
#if sizeof(int) == 4
typedef unsigned int Integer32;
#else
typedef unsigned long Integer32;
#endif
还是您必须只#define 整数大小并编译不同的标头?
如果您需要精确的尺寸,您可以使用intXX_t
anduintXX_t
变体,其中 XX 是 8、16、32 或 64。
如果您需要至少有一定大小的类型,请使用int_leastXX_t
and uint_leastXX_t
;
如果您需要快速,请使用int_fastXX_t
and uint_fastXX_t
。
<stdint.h>
你可以从C99 中获得这些。如果你没有C99,那就有点难了。您不能使用sizeof(int)
,因为预处理器不知道类型。因此,使用INT_MAX
(from<limits.h>
等) 来确定特定类型是否足够大以满足您的需要。