__uint128_t на mingw gcc

Я пытаюсь скомпилировать AC-программу под MINGW GCC. Эта программа использует __uint128_t целое число. Когда я пытаюсь скомпилировать его под стандартным Ubuntu GCC на той же 64-битной машине, это прекрасно работает. Но потом, когда я пытаюсь скомпилировать его для Windows под Mingw, он просто не распознает __uint128_t ключевое слово. Что это значит? Под mingw нет 128-битных чисел? Если нет, есть ли какой-нибудь язык программирования для окон, который имеет собственные (и FAST) 128-битные целые числа?

3 ответа

Тебе нужно

  • относительно недавняя версия gcc
  • версия, скомпилированная с поддержкой 64-битного целого числа

__int128_t затем эмулируется с помощью пар int64_t так же, как 64-битные целые числа эмулируются с 32-битными, если они не доступны на 32-битных компиляциях

Мне удалось получить ту же проблему, используя Code::Blocks и установку по умолчанию mingw (которая, кстати, IA32), однако, когда я установил TDM-MinGW64, он скомпилировался нормально (после добавления компилятора x64 в C::B). Поэтому убедитесь, что ваша сборка mingw ориентирована на x64 (с -m64) и это x64 сборка mingw, как __uint128_t является необязательным расширением x64 ABI.

какую бы оконную IDE вы не использовали __int128_t как ключевое слово, хотя, как его специальное расширение GCC (как уже упоминалось).

Но потом, когда я пытаюсь скомпилировать его для windows под mingw, он просто даже не распознает ключевое слово __uint128_t. Что это значит? Под mingw нет 128-битных чисел?

выполнять gcc -dM -E - < /dev/null | grep INT128, Если вывести макрос #define __SIZEOF_INT128__ 16, затем __uint128_t доступен. Если он не выводит макрос или его меньше 16, то __uint128_t не доступен.

Также смотрите 128-битное целое число - бессмысленная документация? в списке рассылки пользователей GCC.

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