有什么方法可以找到 VarDecl 的功能?
Any way to find the function of a VarDecl?
我想知道是否有可能找到函数中是否初始化了 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()));
}
}
这个returns这个变量的名字对我来说还不错
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());
}
returns 函数和该函数的参数。
我想知道 FunctionDecl 中是否有一种方法可以指定内部存在的 VarDecl,或者我是否可以找到 VarDecl 所属的 FunctionDecl。
VarDecl
is a subclass of Decl
which has a function getParentFunctionOrMethod()
. This function returns a DeclContext *
which is a superclass of FunctionDecl
. To downcast the DeclContext *
to a FunctionDecl *
you should use the functions from llvm/Support/Casting.h.
我想知道是否有可能找到函数中是否初始化了 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()));
}
}
这个returns这个变量的名字对我来说还不错
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());
}
returns 函数和该函数的参数。
我想知道 FunctionDecl 中是否有一种方法可以指定内部存在的 VarDecl,或者我是否可以找到 VarDecl 所属的 FunctionDecl。
VarDecl
is a subclass of Decl
which has a function getParentFunctionOrMethod()
. This function returns a DeclContext *
which is a superclass of FunctionDecl
. To downcast the DeclContext *
to a FunctionDecl *
you should use the functions from llvm/Support/Casting.h.