int128在Linux上的Intel编译器
int128 on Linux for Intel compiler
Linux 2.6.32
Intel编译器:icpc version 13.0.1 (gcc version 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编译器选项启用。该文件需要编译器和库支持即将到来的^
编译int01.cpp(代码4)终止
icpc int01.cpp -std=c++0x
int01.cpp(4):错误:标识符"uint128_t"未定义Uint128_t = 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)和2)我读到的所有东西基本上都说这是实验性的和平台相关的。虽然@Basile建议它应该是uint128_t
,但我找不到编译器Intel
, gcc
或clang
支持__uint128_t
以外的任何东西,您可以在Live Work空间尝试各种编译器。这是我对这个问题的尝试。
至于3),似乎没有这些流的版本支持__uint128_t
,因为它是实验性的,这应该是令人惊讶的。这之前的线程如何打印__uint128_t号码使用gcc?显示了一些替代方案。
你有什么理由不去探索一些Bigint库吗?
- 功能模板与Variadic模板过载:Intel C 编译器版本18产生的结果不同于其他编译器.英特尔是错误的
- 如何将现有的矢量化函数与Intel编译器自动化的现有标量函数相关
- C STD ::排序Intel编译器错误:访问违规
- 我可以在不安装Visual Studio [Windows]的情况下使用Intel C 编译器
- Intel C 编译器的编译非常慢,无法编译递归声明返回
- 已安装的Intel C 编译器,缺失 /位 /C 配置
- Intel c++编译器ICC似乎忽略了SSE/AVX设置
- 在Linux服务器上编译c++程序时,Intel编译器的语法
- Armadillo与intel c++编译器错误
- 为什么Intel编译器忽略了Intel MIC的非时序预取指令
- 在用intel编译器编译代码时排除/usr/include/c++/4.3/
- 使用Intel编译器集作为平台工具集
- 为什么NaN - NaN == 0.0与Intel c++编译器
- 在linux上使用intel编译器编译Eigen库时出现错误
- 一段代码不能被intel编译器编译,但是clang可以编译它
- Intel c++编译器- const string是可修改的
- int128在Linux上的Intel编译器
- Intel编译器生成的代码比MSVC慢68%(提供了完整的示例)
- 如何配置Eclipse(或任何IDE),以便在远程SSH主机上使用Intel编译器编译c++
- 使用c++ /intel c++编译器调用fortran函数