我使用Clang从C++源代码构建 AST,并使用RecursiveASTVisitor来遍历树。
我想在访问的记录声明中决定它是类、结构还是联合。我有一个被覆盖的函数VisitCXRecordDecl(clang::CXRecordDecl)。在这个函数中,我可以检查该类提供的有关 CXXRecordDecl的任何信息,但我不知道如何获取这些信息。
谁能帮我?
我使用Clang从C++源代码构建 AST,并使用RecursiveASTVisitor来遍历树。
我想在访问的记录声明中决定它是类、结构还是联合。我有一个被覆盖的函数VisitCXRecordDecl(clang::CXRecordDecl)。在这个函数中,我可以检查该类提供的有关 CXXRecordDecl的任何信息,但我不知道如何获取这些信息。
谁能帮我?
在运行时,C++ 不区分类和结构,而联合仅通过其数据成员都共享地址空间这一事实来区分。
因此,实现这一点的唯一方法是在您的类/结构/联合定义中包含元数据,以支持对您很重要的区别。例如:
typedef enum { class_ct, struct_ct, union_ct } c_type;
class foo {
public:
c_type whattype() { return class_ct; }
};
struct bar {
public:
c_type whattype() { return struct_ct; }
};
union baz {
public:
c_type whattype() { return union_ct; }
};
//B