Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

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

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