我首先应该说我认为我想做的事情是不可能的(已经阅读了我认为是 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 的哪个部分?