Сначала я должен сказать, что не думаю, что то, что я хочу сделать, возможно (прочитав то, что я считаю соответствующими частями ISO C99), но вот приблизительное представление о том, что я имею сейчас:
struct foo {
int x;
int *y;
};
#define FOO_INITIALIZER(name) \
{ \
.x = 1, \
.y = &(name).x, \
}
struct foo bar = FOO_INITIALIZER(bar);
Это работает в C99 / C11, но что я действительно хочу - это сбросить параметр name в макрос FOO_INITIALIZER.Возможно ли это?
Я знаю, что это не работает:
#define FOO_INITIALIZER \
{ \
.x = 1, \
.y = &.x, \
}
Если возможно, в какой раздел ISO / IEC 9899: TC3 мне следует обратиться?