如何在clang :: VarDecl中获取变量名的位置

Ale*_*xey 6 c++ clang

我正在使用clang 3.0库来分析C/C++代码,我需要获取变量声明的位置,我试过这段代码:

clang::VarDecl * vd = ...;
clang::SourceManager & srcMgr = ...;

clang::SourceRange loc = vd->getSourceRange();
clang::PresumedLoc locStart = srcMgr.getPresumedLoc(loc.getBegin());
clang::PresumedLoc locEnd = srcMgr.getPresumedLoc(loc.getEnd());
Run Code Online (Sandbox Code Playgroud)

但是locStartlocEnd指向声明变量的开头(和结尾)(带有类型,可能是初始化器).例如:

const char * ptr = 0;
^            ^ ^   ^
Run Code Online (Sandbox Code Playgroud)

locStart将指向第一个指针(^),而locEnd将指向最后一个指针.如何获取第二个和第三个指针的位置(仅限名称,没有类型和初始化)?

Die*_*ühl 5

我目前未在位置进行测试,但我认为你要提取SourceLocation所获得getLocation()从你的VarDecl.该函数实际上由Decl基类定义.虽然它似乎只识别一个位置,但它似乎可用于识别整个名称(我没有试图提取其各自的结尾,但是,只是用它来表示变量).