0

我正在寻找一种方法,在 Visual Studio 2015 中使用 natvis 在单独的数组中显示结构数组的条目。

显示这个

+-x[0]
  +-a
  +-b
  +-c
+-x[1]
  +-a
  +-b
  +-c
...

作为

a
+-[0]    (= x[0].a)
+-[1]    (= x[1].a)
...
b
+-[0]    (= x[0].b)
+-[1]    (= x[1].b)
...
c
+-[0]    (= x[0].c)
+-[1]    (= x[1].c)
4

1 回答 1

0

编辑:在评论之后,这是一个可行的解决方案,但它需要对齐您的代理类型,在我的情况下,这只能用二的幂值来完成。

#define A(t) __declspec(align(t))

struct C
{
    int a;
    int b;
    int c;
    int junk;
};

A(16) struct D
{
    int z;
};

A(16) struct DB {
    int junk;
    int z;
};

A(16) struct DC {
    int junk[2];
    int z;
};

typedef union
{
    D da;
    DB db;
    DC dc;
} Ui;

typedef union
{
    C c[50];
    Ui d[50];
} U;

原始(不完整)答案:

每种类型都被单独解析和可视化。因此,在解析每个 x 元素时,无法存储该数据以供以后聚合 a、b 和 c。

但是,您可以更改代码,使重叠(联合)类型与您的数组完全匹配。然后为每种类型编写单独的可视化工具:

__decltypestruct C { int a,b,c; };
struct D { int a[10], b[10], c[10]; };
union {
C c[10];
D d;
};
于 2016-12-19T19:29:54.327 回答