clang和__float128错误/错误

Car*_*s00 15 c++ llvm clang

我已经成功编译了clang的当前3.3分支.但随后任何文件的C++编译都会因错误/错误而失败.可以修复吗?

In file included from /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/iostream:39:
In file included from /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/ostream:39:
In file included from /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/ios:40:
In file included from /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/bits/char_traits.h:40:
In file included from /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/bits/stl_algobase.h:65:
In file included from /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/bits/stl_pair.h:61:
In file included from /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/bits/move.h:57:
/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/type_traits:256:39: error: use of
      undeclared identifier '__float128'
    struct __is_floating_point_helper<__float128>
                                      ^
1 error generated.
Run Code Online (Sandbox Code Playgroud)

Leo*_*sky 22

你可以修复它:

CXXFLAGS+="-D__STRICT_ANSI__"
Run Code Online (Sandbox Code Playgroud)


pax*_*blo 5

我不认为clang支持__float128.它可能long double(16字节clang)的类型相同,因此可能是插入的简单情况:

#define __float128 long double
Run Code Online (Sandbox Code Playgroud)

要么:

typedef long double __float128;
Run Code Online (Sandbox Code Playgroud)

在你的包含链的早期某个地方.

我不保证它会起作用,但它可能会,并且最好尝试一下,而不是等到clang开始支持更多gcc扩展.

要么是,要么切换到gcc,如果这是一个选项.我敢肯定,gcc支持所有的的gcc扩展:-)