Czy można zmodyfikować to X-Macro, aby zbudować strukturę, która zawiera tablice? W jaki sposób?

Znalazłem to bardzo pomocne Q / A na SO:Czy jest jakiś sposób na przejście przez strukturę z elementami różnych typów w C?

ale ponieważ jestem całkiem nowy w całym X-Macro, zastanawiałem się, czy i jak byłoby możliwe dostosowanie tego przykładu do struktury z tablicami - tak:

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

To byłoby dostosowanie:

//--- 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;

Mój punkt wyjścia był taki, ale jestem pewien, że format musiałby być czymś innym lub musiałby zostać zastąpiony:

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

Adres byłby taki jak {0x10,0x12,0x0A} - wszystkie o tym samym rozmiarze.

Edytować:

Oto przykład tego, jak obecnie używam tej struktury, bez x-macros:

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

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

questionAnswers(1)

yourAnswerToTheQuestion