表示uint64_t的最大值的宏

时间:2013-04-30 11:20:27

标签: c++ uint64

我正在寻找代表uint64_t的{​​{1}}的最大值的宏代表UINT_MAX。 即,我需要保证该值为(1 <&lt; 64)-1。

我尝试使用unsigned int,但使用g ++编译结果:

UINT64_MAX

值得一提的是,在使用'UINT64_MAX' was not declared in this scope 之前,我在代码中有这一行#define __STDC_LIMIT_MACROS

我很惊讶没有在网上找到有关它的有用信息。

1 个答案:

答案 0 :(得分:18)

可移植地使用cstdint标头可能是一个很大的挑战(某些MSVC实现中缺少它)。同时,如果没有numeric_limits::max()constexpr可能很难使用,并且实际上并不需要使用uint64_t。如果你不太关心这些事情,std::numeric_limits<uint64_t>::max()最有可能做到这一点。

Boost.Integer具有cstdint的实现,并附带一个额外的traits类以获得恒定的最大值。 cstdint的兼容实现也应该提供宏UINT64_MAX,但我不确定是否有提升。