在 Clang 的 AST 中修改匿名结构和联合

问题描述

我正在尝试编写一个外部 Clang AST 修饰符,将匿名结构和联合定义转换为不同的形式。例如,我有:

typedef struct test_case_t {
  struct {
    int value;
  } first[1];
  int second;
  int third[1];
} test_case_t;

我想将其转换为:

struct test_case_t {
    struct first{
        int value;
    };
    struct first first[1];
    int second;
    int third[1];
};
typedef struct test_case_t test_case_t;

但是,转换似乎删除了 struct first 声明,所以这就是我得到的:

struct test_case_t {
    struct{ // this should be "struct first"
        int value;
    };
    struct first first[1];
    int second;
    int third[1];
};
typedef struct test_case_t test_case_t;

如何修改结构体定义并添加 first 声明名称?我有第一个变量定义的 RecordDecl,但我似乎无法弄清楚如何转换结构定义。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)