__uint128_t на mingw gcc - PullRequest
       62

__uint128_t на mingw gcc

8 голосов
/ 24 августа 2011

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

Ответы [ 3 ]

5 голосов
/ 24 августа 2011

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

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

5 голосов
/ 24 августа 2011

Вам нужна

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

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

1 голос
/ 11 января 2017

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

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

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

...