使用Clang
库,是否有一些可用的方法来获取变量的大小(就好像我在常规的C / C ++程序中使用sizeof()
一样?
我能够(这是我想要做的)发现VarDecl
,但目前我仍然无法找到Clang命名空间中的任何方法来获取我发现的var的大小当前VarDecl
答案 0 :(得分:5)
类型的大小信息存储在与给定类型关联的TypeInfo中。 您可以通过getTypeInfo函数从ASTContext获取相应的FieldInfo对。 该对的第一个元素是以位为单位的大小。第二个元素是比特类型的对齐。
bool VisitVarDecl(VarDecl *VD) {
std::pair<uint64_t, unsigned> FieldInfo = VD->getASTContext().getTypeInfo(VD->getType());
uint64_t TypeSize = FieldInfo.first;
unsigned FieldAlign = FieldInfo.second;
llvm::outs() << VD->getNameAsString() << " Size: " << TypeSize/8 << " Alignment: " << FieldAlign/8 << '\n';
}