小编Enr*_*ico的帖子

libclang 解析生成错误的输出

我正在尝试使用 libclang 构建一个小型解析程序。

要解析的源文件(Node.h):

#pragma once

struct Node {
    int value;
    struct Node *next;
};
Run Code Online (Sandbox Code Playgroud)

主程序简单地调用 clang 解析器并遍历 AST 中的所有元素:

int main(int argc, char *argv[]) {
    CXIndex index = clang_createIndex(0, 0);

    const char *filename = "Node.h";

    CXTranslationUnit TU = clang_parseTranslationUnit(index, filename, NULL, 0, NULL, 0, CXTranslationUnit_None);

    CXCursor rootCursor = clang_getTranslationUnitCursor(TU);

    clang_visitChildren(rootCursor, printVisitor, NULL);

    clang_disposeTranslationUnit(TU);
    clang_disposeIndex(index);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

访客:

CXChildVisitResult printVisitor(CXCursor cursor, CXCursor parent, CXClientData client_data) {

    CXSourceRange range = clang_getCursorExtent(cursor);
    CXSourceLocation startLocation = clang_getRangeStart(range);
    CXSourceLocation endLocation = clang_getRangeEnd(range);

    CXFile …
Run Code Online (Sandbox Code Playgroud)

parsing llvm clang

5
推荐指数
1
解决办法
1321
查看次数

标签 统计

clang ×1

llvm ×1

parsing ×1