0

有没有办法做到这一点?

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

还是您必须只#define 整数大小并编译不同的标头?

4

1 回答 1

2

如果您需要精确的尺寸,您可以使用intXX_tanduintXX_t变体,其中 XX 是 8、16、32 或 64。

如果您需要至少有一定大小的类型,请使用int_leastXX_tand uint_leastXX_t;

如果您需要快速,请使用int_fastXX_tand uint_fastXX_t

<stdint.h>你可以从C99 中获得这些。如果你没有C99,那就有点难了。您不能使用sizeof(int),因为预处理器不知道类型。因此,使用INT_MAX(from<limits.h>等) 来确定特定类型是否足够大以满足您的需要。

于 2013-01-15T22:26:30.997 回答