-1

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ディレクティブ:このファイルには、次のISOC++標準であるC++0xのコンパイラとライブラリのサポートが必要です。このサポートは現在実験段階であり、-std = c++0xまたは-std=gnu++0xコンパイラオプションを使用して有効にする必要があります。#errorこのファイルには、今後の\^のコンパイラとライブラリのサポートが必要です。

int01.cpp(コード4)のコンパイルが中止されました

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

int01.cpp(4):エラー:識別子"uint128_t"は未定義ですuint128_tval128 = 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)のコンパイルが中止されました

何か提案はありますか?

4

1 に答える 1

0

1) と 2) については、基本的にこれは実験的であり、プラットフォームに依存していると言っています。uint128_t@Basile はI can't find a compiler Intelgccまたはclangthat support anything butであるべきだと提案しましたが、 Live Work Space__uint128_tでさまざまなコンパイラを試すことができます。これは、この問題に対する私の試みです。

__uint128_t3) に関しては、おそらく驚くべきことに実験的なものであるため、サポートするこれらのストリームのバージョンはないように思われます。この前のスレッドgcc を使用して __uint128_t 番号を出力する方法は? いくつかの代替案を示します。

いくつかのBigintライブラリを探索しない理由はありますか?

于 2013-03-13T12:58:11.503 に答える