我正在研究 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 行的信息。
比如size是4,name是array。 如果有任何解决方案,请建议我。
最佳答案
旧式 C 数组恰恰有这个缺点:当您传递数组(作为指针/地址)时,数组的长度信息会丢失。
我个人建议完全不要再使用它们。
如果大小事先已知且为常量,则使用 STL std::array;如果必须动态增长,则使用 std::vector。他们总是知道自己有多大。
特别是,忘记 char[],对所有文本使用 std::string。
关于c++ - 声明后如何获取变量及其大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57652730/