Можно ли изменить этот X-Macro для создания структуры, которая включает в себя массивы? Как?

Нашел это очень полезное Q / A на SO:Есть ли способ пройти через структуру с элементами разных типов в C?

но так как я совершенно новичок во всем, что касается X-Macro, мне было интересно, можно ли и как-нибудь адаптировать этот пример для структуры с массивами - вот так:

typedef struct
{    
    uint8    Addr1[SIZEOF_ADDR];
    uint8    Addr2[SIZEOF_ADDR];
    uint8    Addr3[SIZEOF_ADDR];
} TEST;

Вот что бы адаптировать:

//--- first describe the structure, the fields, their types and how to print them
#define X_FIELDS \
    X(int, field1, "%d") \
    X(int, field2, "%d") \
    X(char, field3, "%c") \
    X(char *, field4, "%s")

//--- define the structure, the X macro will be expanded once per field
typedef struct {
#define X(type, name, format) type name;
    X_FIELDS
#undef X
} mystruct;

Моя отправная точка была такой, но я уверен, что формат должен был бы быть чем-то другим, или должен был бы быть заменен:

#define X_FIELDS \
    X(uint8, Addr1, "%02X") \
    X(uint8, Addr2, "%02X") \    
    X(uint8, Addr3, "%02X")

Адрес будет что-то вроде {0x10,0x12,0x0A} - все одного размера.

Редактировать:

Это пример того, как я использую эту структуру в настоящее время, без х-макросов:

TEST test =  {{0x16,0xA4,0x3},
              {0x16,0xA4,0x2},
              {0x16,0xA4,0x1}};

printf("%02X",test.addr1[i]);

Ответы на вопрос(1)

Ваш ответ на вопрос