【问题标题】:Get typedef type and name with libclang?使用 libclang 获取 typedef 类型和名称?
【发布时间】:2014-08-21 00:32:16
【问题描述】:

如果它们是匿名结构等,我可以得到 typedef 的名称和类型,但是普通的 typedef(例如typedef int size_t)我只能得到size_t。如何获得“int”类型?

【问题讨论】:

  • 这个问题和 Lua 有什么关系?
  • 我将 libclang 与我在 LuaJIT 中制作的包装器一起使用。我以为我已将其添加到帖子中,但我想我忘记了

标签: c typedef libclang


【解决方案1】:

几乎迟到了一年,但这是我在搜索这个确切问题时出现的第一个结果,所以这里有一个希望更好的答案:

clang-c/Index.h 中,函数clang_getTypedefDeclUnderlyingType 将获得typedef 的typedef 类型来自clang_getCursorType 获得typedef 的typedef 类型时间>。为了澄清,对于这条线:

typedef a b;

clang_getTypedefDeclUnderlyingType 返回aclang_getCursorType 返回b(都作为CXType)。

【讨论】:

  • 晚了一年,但仍然解决了我的问题。谢谢。
【解决方案2】:

你不能那样做。 C 没有类型的运行时名称,实际上,当您使用 typedef int 时,只有编译器关心类型名称。运行时将无法区分它们。

【讨论】:

  • Libclang 应该让你这样做。它使您可以执行在运行时无法确定的其他事情。 Libclang 不编译;它只是以 API 形式为您提供 AST 输出
猜你喜欢
  • 2023-03-17
  • 2011-02-04
  • 1970-01-01
  • 1970-01-01
  • 2013-11-29
  • 1970-01-01
  • 1970-01-01
  • 2010-09-21
相关资源
最近更新 更多