int128 в Linux для компилятора Intel

Linux 2.6.32

Компилятор Intel: ICPC версии 13.0.1 (совместимость с gcc версии 4.4.6)

#include <iostream>
#include <sys/types.h>
int main()
{
std::cerr << sizeof (__uint128_t) << std::endl;
return 0;
}

Выход: 16

Итак, наберите __uint128_t существует.
Тем не менее, работа с __uint128_t производит ошибки компиляции и запуска.

Программы:

// File int01.cpp
#include <cstdint>
int main()
{
uint128_t val128 = 0;
return 0;
}// File int02.cpp
#include <cstdint>
int main()
{
__uint128_t val128 = 0;
return 0;
}// File int03.cpp
#include <iostream>
#include <cstdint>
int main()
{
__uint128_t val128 = 0;
std::cerr << val128 << std::endl;
return 0;
}

Сборники:

icpc int01.cpp

/usr/include/c++/4.4.6/c++0x_warning.h(31): катастрофическая ошибка: директива #error: Этот файл требует поддержки компилятора и библиотеки для предстоящего стандарта ISO C ++, C ++ 0x. Эта поддержка в настоящее время является экспериментальной и должна быть включена с помощью опций компилятора -std = c ++ 0x или -std = gnu ++ 0x.
#error Этот файл требует поддержки компилятора и библиотеки для предстоящего \
^

сборка прервана для int01.cpp (код 4)

icpc int01.cpp -std = c ++ 0x

int01.cpp (4): ошибка: идентификатор «uint128_t» не определен
uint128_t val128 = 0;
^

компиляция прервана для int01.cpp (код 2)

icpc int02.cpp -std = c ++ 0x

// Нет ошибок

icpc int03.cpp -std = c ++ 0x

int03.cpp (6): ошибка: более одного оператора «<<«соответствует этим операндам:

        function "std::basic_ostream<_CharT, _Traits>::operator<<(long) [with _CharT=char, _Traits=std::char_traits<char>]"function "std::basic_ostream<_CharT, _Traits>::operator<<(unsigned long) [with _CharT=char, _Traits=std::char_traits<char>]"function "std::basic_ostream<_CharT, _Traits>::operator<<(bool) [with _CharT=char, _Traits=std::char_traits<char>]"function "std::basic_ostream<_CharT, _Traits>::operator<<(short) [with _CharT=char, _Traits=std::char_traits<char>]"function "std::basic_ostream<_CharT, _Traits>::operator<<(unsigned short) [with _CharT=char, _Traits=std::char_traits<char>]"function "std::basic_ostream<_CharT, _Traits>::operator<<(int) [with _CharT=char, _Traits=std::char_traits<char>]"function "std::basic_ostream<_CharT, _Traits>::operator<<(unsigned int) [with _CharT=char, _Traits=std::char_traits<char>]"function "std::basic_ostream<_CharT, _Traits>::operator<<(long long) [with _CharT=char, _Traits=std::char_traits<char>]"function "std::basic_ostream<_CharT, _Traits>::operator<<(unsigned long long) [with _CharT=char, _Traits=std::char_traits<char>]"function "std::basic_ostream<_CharT, _Traits>::operator<<(double) [with _CharT=char, _Traits=std::char_traits<char>]"function "std::basic_ostream<_CharT, _Traits>::operator<<(float) [with _CharT=char, _Traits=std::char_traits<char>]"function "std::basic_ostream<_CharT, _Traits>::operator<<(long double) [with _CharT=char, _Traits=std::char_traits<char>]"operand types are: std::ostream << __uint128_t
std::cerr << val128 << std::endl;
^

сборка прервана для int03.cpp (код 2)

У вас есть какие-нибудь предложения?

-1

Решение

Что касается 1) и 2) все, что я прочитал, в основном говорит, что это экспериментальный и платформо-зависимый. Хотя @Basile предположил, что это должно быть uint128_t Не могу найти компилятор Intel, gcc ни clang которые поддерживают все, кроме __uint128_tВы можете попробовать различные компиляторы на Live Work Space. Это моя попытка на эту проблему.

Что касается 3), может показаться, что нет версии этих потоков, которые поддерживают __uint128_t так как это экспериментально, возможно, это должно быть удивительно. Эта предыдущая тема Как напечатать номер __uint128_t с помощью GCC? показывает некоторые альтернативы.

Есть ли причина, по которой вы не исследуете некоторые из BigInt библиотеки там?

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]