我正在寻找代表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
。
我很惊讶没有在网上找到有关它的有用信息。
答案 0 :(得分:18)
可移植地使用cstdint
标头可能是一个很大的挑战(某些MSVC实现中缺少它)。同时,如果没有numeric_limits::max()
,constexpr
可能很难使用,并且实际上并不需要使用uint64_t
。如果你不太关心这些事情,std::numeric_limits<uint64_t>::max()
最有可能做到这一点。
Boost.Integer具有cstdint
的实现,并附带一个额外的traits类以获得恒定的最大值。 cstdint
的兼容实现也应该提供宏UINT64_MAX
,但我不确定是否有提升。