Какие версии gcc поддерживают внутренний тип __int128?

Под gcc docs 128-битные целые числа есть:

Как расширение целочисленный скалярный тип __int128 поддерживается для целей, у которых целочисленный режим достаточно широк, чтобы содержать 128 бит. Просто пиши __int128 для 128-разрядного целого числа со знаком или unsigned __int128 для 128-битного целого без знака.

В GCC нет поддержки для выражения целочисленной константы типа __int128 для целей с длинным длинным целым числом шириной менее 128 бит.

Мне было интересно, в какой версии gcc добавлена ​​поддержка этого типа или есть макрос, который можно использовать напрямую для проверки его существования.

2 ответа

Решение

Не уверен насчет первой версии, но вы можете проверить __SIZEOF_INT128__ макрос - который (как правило) 16 если определено.

Получить источник и:

git log --reverse --grep='__int128'

чтобы увидеть первое вхождение слова в сообщении фиксации.

Это приводит нас к: https://github.com/gcc-mirror/gcc/commit/6388cfe24f7ecbdc2ba2d4c80638ea6c95ba07c2 который говорит:

Add __int128 keyword.

Затем перечислите все теги, которые содержат коммит с:

git tag --contains 6388cfe24f7ecbdc2ba2d4c80638ea6c95ba07c2

и самый ранний из них:

gcc-4_6_0-release

TODO: есть также более ранняя ссылка на __int128_t чего я не понял. В чем разница между __int128 а также _int128_t?

Другие вопросы по тегам