我想知道是否有可能找到VarDecl是否在函数中初始化,如果是,则将该函数名作为FunctionDecl或字符串获取。
香港专业教育学院浏览了http://clang.llvm.org/doxygen/classclang_1_1ValueDecl.html,但我找不到任何东西。任何帮助,将不胜感激。
///This function will be called whenever a variable is found in the ASTReader
static void RegisterVarDecl(void *v)
{
VarDecl* var = (VarDecl*)v;
if (var->isLocalVarDecl()){
variables_.push_back(new string(var->getNameAsString().c_str()));
}
}
Run Code Online (Sandbox Code Playgroud)
这为我很好地返回了变量的名称,而
static void RegisterFunctionDecl(void * v)
{
FunctionDecl* func = (FunctionDecl*)v;
funcs_.push_back(new string(func->getNameInfo().getName().getAsString()));
if (func->getNumParams() > 0){
for (int i = 0; i < func->getNumParams(); ++i){
params_.push_back(new string(func->getParamDecl(i)->getNameAsString()));
}
}
num_params_.push_back(func->getNumParams());
}
Run Code Online (Sandbox Code Playgroud)
返回函数和该函数的参数。
我想知道在FunctionDecl中是否有一种方法可以指定内部存在哪些VarDecls,或者是否可以找到VarDecl所属的FunctionDecl。
VarDecl是Decl具有功能的子类getParentFunctionOrMethod()。此函数返回,DeclContext *它是的超类FunctionDecl。要将其向下转换DeclContext *为a,FunctionDecl *您应该使用llvm / Support / Casting.h中的功能。
| 归档时间: |
|
| 查看次数: |
413 次 |
| 最近记录: |