Макрос, представляющий максимальное значение для uint64_t

Я ищу макрос, представляющий максимальное значение 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,

Я был удивлен, что не нашел в интернете полезную информацию об этом.

22

Решение

С использованием cstdint заголовок переносимо может быть довольно сложной задачей (он отсутствует в некоторых реализациях MSVC). В то же время numeric_limits::max() может быть трудно использовать без constexpr и на самом деле не требуется работать с uint64_t, Если ты не слишком заботишься об этих вещах, std::numeric_limits<uint64_t>::max() скорее всего, добьется цели.

Boost.Integer имеет реализацию cstdint и поставляется с дополнительным классом черт, чтобы получить постоянное максимальное значение. Соответствующая реализация cstdint должен также предоставить макрос UINT64_MAX, но я не уверен насчет буста.

16

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]