При использовании агрегатной/назначенной инициализации структуры можно ссылаться на другое поле следующим образом:
#include <stdio.h>
int main()
{
struct
{
int a;
int b;
}
s =
{
.a = 3,
.b = s.a + 1,
};
return 0;
}
Мы используем s.a при инициализации s.b. Однако нам нужно обратиться к s.a через s. Можно ли напрямую ссылаться на s.a. просто как .a
или подобное? Это, например, позволит использовать тот же синтаксис при инициализации массивов структур, как здесь:
int main()
{
struct
{
int a;
int b;
}
s[] =
{
{
.a = 3,
.b = s[0].a + 1,
},
{
.a = 5,
.b = s[1].a - 1,
}
};
return 0;
}
Здесь мы могли бы написать что-то вроде .b = .a - 1
вместо .b = s[1].a - 1
.
.b = .a - 1
, как бы вы различили.b = s[0].a - 1
и.b = s[1].a - 1
? - person cigien   schedule 12.11.2020.a
была обычной переменной. - person Sara Haugen   schedule 12.11.2020.a
относиться кs[0].a
илиs[1].a
? Оба находятся в одной области. - person cigien   schedule 12.11.2020