Я использую библиотеку 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 будет указывать на последний указатель. Как узнать расположение второго и третьего указателей (только имя, без типа и инициализатора)?