5
我使用鐺3.0庫的C/C++代碼的一些分析,我需要得到變量聲明的位置,我想這樣的代碼:如何獲得鐺變量名的位置:: VarDecl
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在最後指針指向。我怎樣才能得到第二和第三個指針的位置(只有名稱,沒有類型和初始化)?
對不起,但'getQualifierLoc()'沒有幫助。這個函數返回'NestedNameSpecifierLoc',對於我的情況它返回空對象(沒有任何信息)。 – Alexey 2012-01-30 15:00:53
是的,你是對的:這實際上是用於像'const'或'volatile'這樣的東西的位置。我已經用一個示例程序進行了測試,它看起來就像使用'getLocation()'一樣簡單:雖然'VarDecl'本身想從類型開始,'getLocation()'返回的'SourceLocation'似乎可以識別名字。 – 2012-01-30 23:32:21
謝謝,它真的有幫助,我不知道,爲什麼我開始使用'getSourceRange','getLocation'適合我! – Alexey 2012-01-31 14:18:21