C++ 叮当声:编译c+时出错+;应为成员名称或'';后声明说明符

C++ 叮当声:编译c+时出错+;应为成员名称或'';后声明说明符,c++,linux,cmake,clang,llvm,C++,Linux,Cmake,Clang,Llvm,我正试图根据llvm的标准,使用llvm测试套件运行SPEC2017基准测试。我的cmake命令成功了,但是使用make,我在include文件中得到了错误,比如numeric_traits.h。我在numeric\u traits.h和stl\u algobase.h中得到每次出现\u is\u signal的错误 CMake命令: $ cmake -DCMAKE_C_COMPILER:STRING="/usr/bin/clang-7" -DCMAKE_CXX_COMPILER:STRING=

我正试图根据llvm的标准,使用llvm测试套件运行SPEC2017基准测试。我的cmake命令成功了,但是使用make,我在include文件中得到了错误,比如numeric_traits.h。我在
numeric\u traits.h
stl\u algobase.h
中得到每次出现
\u is\u signal
的错误

CMake命令:

$ cmake -DCMAKE_C_COMPILER:STRING="/usr/bin/clang-7" -DCMAKE_CXX_COMPILER:STRING="/usr/bin/clang++-7" -DCMAKE_C_FLAGS="-fPIC" -C../test-suite/cmake/caches/O3.cmake -DTEST_SUITE_SPEC2017_ROOT:STRING="../speccpu2017" ../test-suite
...
$ make
...
In file included from /home/speccpu2017/benchspec/CPU/526.blender_r/src/blender/source/blender/render/intern/raytrace/rayobject_qbvh.cpp:37:
In file included from /home/speccpu2017/benchspec/CPU/526.blender_r/src/blender/source/blender/render/intern/raytrace/vbvh.h:34:
In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/algorithm:61:
In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/bits/stl_algobase.h:63:

/usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/ext/numeric_traits.h:63:25: error: expected member name or ';' after
      declaration specifiers
      static const bool __is_signed = __glibcxx_signed(_Value);
      ~~~~~~~~~~~~~~~~~ ^

/usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/ext/numeric_traits.h:74:50: error: expected unqualified-id
    const bool __numeric_traits_integer<_Value>::__is_signed;
                                                 ^    
[Long error. Truncated for clarity]
$cmake-DCMAKE\u C\u编译器:STRING=“/usr/bin/clang-7”-DCMAKE\u CXX\u编译器:STRING=“/usr/bin/clang++-7”-DCMAKE\u C\u FLAGS=“-fPIC”-C../test suite/cmake/caches/O3.cmake-DTEST\u suite\u SPEC2017\u ROOT:STRING=“../speccpu2017”。/test suite
...
$make
...
文件包括在/home/speccpu2017/benchspec/CPU/526.blender\u r/src/blender/source/blender/render/intern/raytrace/rayobject\u qbvh.cpp:37:
文件中包括/home/speccpu2017/benchspec/CPU/526.blender\r/src/blender/source/blender/render/intern/raytrace/vbvh.h:34:
在/usr/bin/./lib/gcc/x86_64-linux-gnu/8/../../../../../../../include/c++/8/算法中包含的文件中:61:
在/usr/bin/./lib/gcc/x86_64-linux-gnu/8/../../../../../../include/c++/8/bits/stl_algobase.h:63中包含的文件中:
/usr/bin/./lib/gcc/x86_64-linux-gnu/8/../../../../../../../include/c++/8/ext/numeric_traits.h:63:25:错误:应为成员名或“;”之后
声明说明符
静态常量bool\uuu是有符号的=\uuu glibcxx\u有符号的(\u值);
~~~~~~~~~~~~~~~~~ ^
/usr/bin/./lib/gcc/x86_64-linux-gnu/8/../../../../../../../include/c++/8/ext/numeric_traits.h:74:50:错误:应为不合格id
常量布尔值数值特征整数:::\uu是有符号的;
^    
[长错误。为清晰起见,已截断]
设置:

  • 铿锵版本7
  • 操作系统:Ubuntu 18.04
  • linux:4.18.0-25-generic
  • 规范版本:2017

将其放入CXX的可移植性标志中


仅供参考,
/config/Example-clang-llvm-linux-x86.cfg
/config/Example-aocc-linux-x86.cfg
包含特定于clang的可移植性标志。

。虽然没有一个简单的例子是不可能知道的。你的编译器能正确编译吗?您是否尝试过编译一个包含
#include
的简单文件以确保安全?您应该使用
cmake。。。V=1
用于详细输出,其中应包括编译器选项。我的猜测是——这纯粹是猜测——
是有符号的
正在缺少数字转换的自定义结构上调用。这是因为
\uu glibcxx\u signed
\define\uu glibcxx\u signed(\u Tp)(-1)<0)在
numeric\u traits.h
中。您可能应该切换到
numeric\u limits::is\u signed
,而不是
numeric\u traits.h
中的轻量级助手。(阅读
/usr/include/c++/8/ext/numeric_traits.h
中的标题注释)。