在我访问时,让我们说一个声明(Clang库中的Decl
),如何获取已写入此Decl
的文件的名称?
有一个FileData课程,但我找不到任何其他课程可以让我获得FileData
答案 0 :(得分: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();
}
}