当我在访问时,比如说,一个声明(Clang 库中的 Decl),我怎样才能获得写入这个 Decl 的文件的名称?

有一个 FileData 类,但我找不到任何其他类允许我获得这个 FileData

最佳答案

您可以向 SourceManager 询问当前文件的 FileEntry。

例如在匹配器回调中:

void MyMatcher::run(const MatchFinder::MatchResult& Result) {
    ASTContext* Context = Result.Context;
    if (const Decl* D = Result.Nodes.getNodeAs<Decl>("MyDecl")) {
        SourceManager& SrcMgr = Context->getSourceManager();
        const FileEntry* Entry = SrcMgr.getFileEntryForID(SrcMgr.getFileID(D.getCaretLocation()));
        const char* FileName = Entry->getName();
    }
}

关于c++ - 如何获取我当前正在使用 Clang 访问的文件的名称?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25075001/

10-12 20:36