Я ищу макрос, представляющий максимальное значение uint64_t
как UINT_MAX
для unsigned int
,
т.е. мне нужно, чтобы это значение гарантированно было (1<<64) -1.
Я пытался использовать UINT64_MAX
, но компиляция с g ++ приводит к:
'UINT64_MAX' was not declared in this scope
Стоит отметить, что у меня есть эта линия #define __STDC_LIMIT_MACROS
в коде перед использованием UINT64_MAX
,
Я был удивлен, что не нашел в интернете полезную информацию об этом.
С использованием cstdint
заголовок переносимо может быть довольно сложной задачей (он отсутствует в некоторых реализациях MSVC). В то же время numeric_limits::max()
может быть трудно использовать без constexpr
и на самом деле не требуется работать с uint64_t
, Если ты не слишком заботишься об этих вещах, std::numeric_limits<uint64_t>::max()
скорее всего, добьется цели.
Boost.Integer имеет реализацию cstdint
и поставляется с дополнительным классом черт, чтобы получить постоянное максимальное значение. Соответствующая реализация cstdint
должен также предоставить макрос UINT64_MAX
, но я не уверен насчет буста.
Других решений пока нет …