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

时间:2012-01-29 16:32:32

标签: 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());

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

const char * ptr = 0;
^            ^ ^   ^

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

1 个答案:

答案 0 :(得分:5)

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