我正在研究clang Libtooling。
我想在再次使用数组时获取有关数组及其大小的信息。 我在实现它方面遇到困难。
这是我的测试文件
void test()
{
int array[5];
array[4]=8;
}
到目前为止,我能够在第3行获得类似数组名称及其大小之类的信息
我用过的尺寸
if (const VarDecl *D = Result.Nodes.getNodeAs<clang::VarDecl> ("gotit")){
auto t = dyn_cast_or_null<ConstantArrayType>(D->getType().getTypePtr());
const llvm::APInt a = t->getSize();
llvm::outs() << a;
llvm::outs()<< "\n";
llvm::outs()<< " array name is : " << D->getNameAsString();
}
但是我如何获得第4行的信息。
像大小是4,名称是array。 请建议我是否有解决方案。
答案 0 :(得分:-1)
旧式的C数组确实具有以下缺点:当您传递数组(作为指针/地址)时,丢失的信息会持续多长时间。
我个人建议不要再使用它们。
如果预先知道大小,则使用STL std :: array;如果必须动态增长,则使用std :: vector。他们一直知道自己有多大。
尤其要忘记char [],对所有文本都使用std :: string。