Разобрать массив структур с помощью natvis
Я ищу способ отображения записей массива структур в отдельных массивах с помощью natvis в visual studio 2015.
Показать это
+-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)
1 ответ
Изменить: После комментария это рабочее решение, но оно требует выравнивания типов прокси, что в моем случае может быть сделано только со значениями степени двух.
#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;
};