我正在寻找一个宏来表示uint64_t
的最大值,就像UINT_MAX
对于unsigned int
一样。也就是说,我需要保证这个值是(1<<64)-1。
我尝试使用UINT64_MAX
,但是使用g++编译会产生以下结果:
'UINT64_MAX' was not declared in this scope
值得一提的是,在使用UINT64_MAX
之前,我在代码中使用了#define __STDC_LIMIT_MACROS
这一行。
我很惊讶在网上找不到关于它的有用信息。
发布于 2013-04-30 19:56:38
使用可移植的cstdint
头可能是一个相当大的挑战(在一些MSVC实现中缺少它)。同时,如果没有constexpr
,numeric_limits::max()
可能很难使用,而且实际上并不需要与uint64_t
一起工作。如果您不太关心这些事情,std::numeric_limits<uint64_t>::max()
很可能会做到这一点。
Boost.Integer有一个cstdint
的实现,并附带了一个额外的特征类来获得一个恒定的最大值。合规的cstdint
实现也应该提供宏UINT64_MAX
,但我不确定boost。
https://stackoverflow.com/questions/16298650
复制相似问题