The commas in __VA_ARGS__ leads to wrong expansion of macro definition, like this
My_Stu_t my_stu = {
    .member2 = {1},
    3}( member3, {2,3} )
};
I hope the correct result should be like this
My_Stu_t my_stu = {
    .member1 = {1},
    .member3 = {2,3},
};
I know why this error is generated, but I don't know how to solve it, please help, thanks.
here is my code: test.c
typedef struct {
    int member1[1];
    int member2[1];
    int member3[2];
} My_Stu_t;
#define MEMBER_AUX( a, b, c, ... )  c
#define MEMBER_WITHOUT_DEFAULT_VALUE( Name, ... )
#define MEMBER_WITH_DEFAULT_VALUE( Name, ... )  .Name = __VA_ARGS__,
#define MEMBER( Name, ... )  MEMBER_AUX( , ##__VA_ARGS__, MEMBER_WITH_DEFAULT_VALUE, MEMBER_WITHOUT_DEFAULT_VALUE )( Name, __VA_ARGS__ )
#define STD_MEMBER( ArrSize, Name, ... )  MEMBER( Name, ##__VA_ARGS__ )
My_Stu_t my_stu = {
    STD_MEMBER( 1, member1)
    STD_MEMBER( 1, member2, {1} )
    STD_MEMBER( 2, member3, {2,3} )
};
preprocess output: gcc test.c -E
My_Stu_t my_stu = {
    .member2 = {1},
    3}( member3, {2,3} )
};