如何使用 Clang 的 C++ API 从 filename/line/column 三元组获取 SourceLocation

How can I get a SourceLocation from a filename/line/column triplet using Clang's C++ API

libclang C API 具有以下功能:

CXSourceLocation clang_getLocation( CXTranslationUnit tu, CXFile file, unsigned line, unsigned column )

我找不到 C++ 的等价物 API。有许多 getLocation 函数,但 none 接受这组参数。

我最终会尝试在给定的源位置获取 DeclRef,如果它存在的话。

为 file:line:column 三元组找到 SourceLocation 可以通过 SourceManager 有点笨拙地完成,如下所示:

SourceManager& srcmgr = astctx.getSourceManager();
FileManager& filemgr = srcmgr.getFileManager();
const FileEntry* file_entry_ptr = filemgr.getFile(filename);
SourceLocation loc = srcmgr.translateFileLineCol(file_entry_ptr, line, column);

虽然那时我仍然不知道如何找到 Stmt