Я хочу найти объявления, в которых есть '&'; например, int *m = &b
, затем сделайте что-нибудь с переводом для таких объявлений.
Теперь я использую ASTMatcher varDecl()
, чтобы найти все VarDecl , и использую declVar->getType().getTypePtr().getAs<clang::PointerType>()
, чтобы получить уменьшение указателя.
Какие функции я могу использовать, чтобы найти следующие 'm = &b'
объявления?
Matcher.addMatcher(varDecl(unless(parmVarDecl())).bind("varDecl"), &VarD);
virtual void run(const MatchFinder::MatchResult &Result) {
ASTContext *Context = Result.Context;
SourceManager &sourceManager_ = Context->getSourceManager();
const VarDecl *declVar = Result.Nodes.getNodeAs<VarDecl>("varDecl");
const clang::Type *type = declVar -> getType().getTypePtr();
const clang::PointerType *pointer_type = type -> getAs
<clang::PointerType>();
if(pointer_type != NULL){
// what functions can I use to find m=&b
}
}