32

uint64_t我正在寻找一个代表as UINT_MAXis for最大值的宏unsigned int。即我需要保证这个值是(1<<64)-1。

我尝试使用UINT64_MAX,但使用 g++ 编译会导致:

'UINT64_MAX' was not declared in this scope

值得一提的是,我#define __STDC_LIMIT_MACROS在使用UINT64_MAX.

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

4

1 回答 1

27

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

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

于 2013-04-30T11:56:38.350 回答