Я хочу использовать 64-битные целые числа в моем коде C ++. Я понимаю, что могу либо #include <cstdint>
а затем объявить uint64_t
или использовать unsigned long long
(или эквивалент для подписанных версий).
Однако, похоже, что поддержка этого не была добавлена до C++11
и я хотел бы, чтобы мой код был совместим с компиляторами, которые не имеют полной поддержки C ++ 11.
Что такое хороший переносимый способ поддержки 64-битных целых чисел в C ++?
uint64_t
является:
Необязательный: Эти typedefs не определены, если нет типов с такими
характеристики существуют.
как вы можете прочитать в ссылка.
От Должен ли я использовать long long или int64_t для переносимого кода?:
Типы
long long
а такжеunsigned long long
являются стандартными типами C и C ++, каждый из которых содержит не менее 64 бит. Все компиляторы, о которых я знаю, предоставляют эти типы, кроме, возможно, когда в-pedantic
режим, но в этом случаеint64_t
или жеuint64_t
также не будет доступен с компиляторами до C ++ 2011. «
Какую дату поддерживал g ++ / clang? long long
/int64_t
от?
поскольку GCC 4.3 (ака 5 марта 2008 г.).
Как отметил Давид Альварес.
Других решений пока нет …