此目标不支持 __float128

Abh*_*ery 5 gcc cygwin gnu clang llvm-gcc

我正在尝试通过cygwin. 安装它时,它失败并显示错误:

/usr/lib/gcc/x86_64-pc-cygwin/5.4.0/include/c++/type_traits:311:39: error: __float128 is not supported on this target
struct __is_floating_point_helper<__float128>
                                  ^
Run Code Online (Sandbox Code Playgroud)

现在在调查它时,我发现它与clang支持'__float128'on only select 目标的问题有关,即在 3.9.0 之前不支持 clang__float128并且在 3.9.0 之前它定义了类型别名作为解决方法。

从 3.9.0 开始,clang 实现了本机__float128 support,并删除了别名解决方法。目前唯一支持 __float128 的目标是linux x86_64 and i686

因此我的问题是,是否有任何解决方案可以消除此错误?

Byo*_*Lee 8

在我的 cygwin64 中,

$ grep -r _GLIBCXX_USE_FLOAT128 /usr /lib
/usr/include/boost/config/compiler/gcc.hpp:#if defined(_GLIBCXX_USE_FLOAT128) && !defined(__STRICT_ANSI__)
/usr/include/boost/math/tools/config.hpp:#if defined(_GLIBCXX_USE_FLOAT128) && defined(BOOST_GCC) && !defined(__STRICT_ANSI__) \
/usr/include/boost/multiprecision/detail/number_base.hpp:#if defined(_GLIBCXX_USE_FLOAT128) && defined(BOOST_GCC) && !defined(__STRICT_ANSI__)
/usr/lib/gcc/x86_64-pc-cygwin/6.3.0/include/c++/x86_64-pc-cygwin/bits/c++config.h:#define _GLIBCXX_USE_FLOAT128 1
/lib/gcc/x86_64-pc-cygwin/6.3.0/include/c++/type_traits:#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128)
/lib/gcc/x86_64-pc-cygwin/6.3.0/include/c++/x86_64-pc-cygwin/bits/c++config.h:#define _GLIBCXX_USE_FLOAT128 1
Run Code Online (Sandbox Code Playgroud)

因此,更改 的值_GLIBCXX_USE_FLOAT128不会有帮助,因为其他宏检查其存在,而不是值。

_GLIBCXX_USE_FLOAT128解决方案是删除包含from的行c++config.h