【问题标题】:How to demangle a C++ name in clang (or gcc)?如何在 clang(或 gcc)中对 C++ 名称进行解码?
【发布时间】:2015-01-07 07:38:07
【问题描述】:

我正在尝试为 clang 编写一个快速而肮脏的 demangler。我找到了一个使用abi::__cxa_demanglepiece of code,但我不知道它需要哪个标头。显而易见的选择是 ABI.h 但是:

demangle.cpp:2:10: fatal error: 'ABI.h' file not found
#include <ABI.h>
         ^

abi::__cxa_demangle 需要做什么?

【问题讨论】:

    标签: c++ gcc clang abi


    【解决方案1】:

    包括cxxabi.h。在 Ubuntu 13 中,此标头位于 /usr/include/c++/4.x 中,其中 x 是次要 gcc 版本。

    【讨论】:

    • 这不是我的 linux 发行版的一部分,也不是 llvm C++ 标准库的一部分。那我该怎么办? gcc 包含路径中有一个 cxxabi.h,但可以与 clang++ -stdlib=libc++ 一起使用?
    • @Walter 尝试#include &lt;cxxabi.h&gt; 而不添加任何特殊的包含路径。顺便说一句,看看c++filt 是否足以满足您的需求。
    • @Adam 那 (#include &lt;cxxabi.h&gt;) 就是我所做的。不,c++filt 不足以满足我的需求 :-((
    • @Walter 我当时不知道。 Clang 将它包含在 OSX 上,所以我不明白为什么它不能通过某些包提供。我不认为你可以假设你可以使用 gcc。
    • @Walter 您是否安装了libstdc++-4.8-devlibc++-dev(或您的编译器发行版中的等效项)?
    【解决方案2】:

    包括 cxxabi.h,但对于 Ubuntu 上的 clang,您需要安装软件包 libc++abi-dev。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-24
      • 2014-09-08
      • 2020-04-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多