获取Clang中变量的大小
Get the size of a variable in Clang
使用Clang
库,是否有一些可用的方法来获得变量的大小(如果我在常规C/c++程序中使用sizeof()
?
我能够(这就是我想做的)发现VarDecl
,但目前我仍然找不到Clang命名空间中的任何方法来获得当前VarDecl
类型的大小信息存储在与给定类型相关联的TypeInfo中。你可以通过getypeinfo函数从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';
}
相关文章:
- CLANG 编译器 说:变量"PTR"可能未初始化
- Visual C++: MSVC vs. GCC+CLANG: 处理 lambda 捕获类成员变量,正确的方法是什么?
- 使用 clang++ 和 g++ 在C++中初始化变量
- 使用变量模板的递归计算 - gcc 与 clang
- 与不同变量类型相比,用于变量的 Clang AST 匹配器
- Clang++ 6.0 内存清理器未报告返回值指示条件分支的函数中的未初始化局部变量
- C :动态分配的变量未在clang中删除
- 如果Constexpr - clang vs.GCC,则非constexpr变量
- GCC和Clang不警告未使用的异常变量
- Clang 在编译时不会计算非 constexpr 变量的 constexpr 函数的值
- gcc 和 clang 中 constexpr 静态成员变量的链接器错误
- Clang AST 匹配器:如何在 lambda 捕获的变量上进行匹配
- 未定义的引用指针的变量模板在clang中功能,而不是GCC
- constexpr 表达式和变量生存期,G++ 和 Clang 不同意的一个例子
- "constexpr"变量"used in its own initializer":Clang与GCC
- clang vs gcc CRTP:constexpr 变量不能有非文字类型
- 声明一个在clang中的非偏见的变量
- 单行多变量声明的clang ast访问者
- 初始化全局变量时,Clang-4.0会生成冗余方法
- CLang 3.5 LibTooling:获取CLang::VarDecl中变量的文件名