如何使用 libclang 获取原始文字的值?
例如,如果我有一个光标类型为 CXCursor_IntegerLiteral 的 CXCursor,我该如何提取文字值。
更新:
我在使用 libclang 时遇到了很多问题。我强烈建议完全避免它,而是使用 clang 提供的 C++ 接口。C++ 接口非常有用并且有很好的文档记录:http ://clang.llvm.org/doxygen/annotated.html
我现在看到的 libclang 的唯一目的是使用以下代码为您生成 ASTUnit 对象(否则并不容易):
ASTUnit * astUnit;
{
index = clang_createIndex(0, 0);
tu = clang_parseTranslationUnit(
index, 0,
clangArgs, nClangArgs,
0, 0, CXTranslationUnit_None
);
astUnit = static_cast<ASTUnit *>(tu->TUData);
}
现在你可能会说 libclang 是稳定的,而 C++ 接口不是。这几乎无关紧要,因为你花时间用 libclang 找出 AST 并用它创建 kludges 无论如何都会浪费你很多时间。我会尽快花几个小时来修复版本升级后无法编译的代码(如果需要的话)。