On 11/12/22 13:34, Alejandro Colomar wrote:
struct s {
     int a;
};

struct t {
     struct s s;
     int a;
};

void f(void)
{
     struct t x = {
         .a = 1,
         .s = {
             .a = ((struct s) {.a = 1}).a,
         },
     };
}

From here, a demonstration of what I understood from Martin's email is that there's also an idea of allowing the following:


struct s {
    int a;
    int b;
};

struct t {
    struct s s;
    int a;
    int b;
};

void f(void)
{
    struct t x = {
        .a = 1,
        .s = {
            // In the following line, .b=.a is assigning 2
            .a = ((struct s) {.a = 2, .b = .a}).b,
            // The previous line assigned 2, since the compound had 2 in .b
        },
        // In the following line, .b=.a is assigning 1
        .b = .a,
    };
}

--
<http://www.alejandro-colomar.es/>

Attachment: OpenPGP_signature
Description: OpenPGP digital signature

Reply via email to