当我在访问时,比如说,一个声明(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/