【问题标题】:How can I get the name of the file I'm currently visiting with Clang?如何获取当前使用 Clang 访问的文件的名称?
【发布时间】:2014-08-01 07:24:54
【问题描述】:

当我访问时,假设是一个声明(Clang 库中的Decl),我怎样才能得到这个 Decl 被写入的文件的名称?

有一个FileData 课程,但我找不到任何其他课程可以让我获得这个FileData

【问题讨论】:

    标签: c++ clang clang++


    【解决方案1】:

    您可以向 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();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2022-11-18
      • 1970-01-01
      • 2012-10-30
      • 1970-01-01
      • 2011-01-30
      • 2012-05-23
      • 1970-01-01
      • 1970-01-01
      • 2016-11-02
      相关资源
      最近更新 更多