表示uint64_t的最大值的宏

Sub*_*way 23 c++ uint64

我在寻找代表的最大值宏uint64_tUINT_MAXunsigned int.即我需要这个值保证为(1 << 64)-1.

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

'UINT64_MAX' was not declared in this scope
Run Code Online (Sandbox Code Playgroud)

值得一提的是我#define __STDC_LIMIT_MACROS在使用之前在代码中有这一行UINT64_MAX.

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

pmr*_*pmr 18

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

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