On Wed, 25 May 2011, Dmitry E. Oboukhov wrote:
тут наверно есть народ который C хорошо знает. такой вопрос.
допустим имеется структура
struct something {
int a;
int b;
};
проинициализировать можно при объявлении так:
struct something a = { .a = 1, .b = 2 }, c = { 2, 3 };
а вот если структура содержит неименованную структуру/union:
struct something {
union {
unsigned a;
struct {
unsigned char b;
unsigned char c;
};
};
int x;
int y;
};
то как зная поля x, y, a или x, y, b, c проинициализировать структуру
при объявлении?
если union и вложенный struct делать именованными, то тут все понятно,
но этого делать не хочется
--
Например так:
struct something2 {
union {
struct {
unsigned char b;
unsigned char c;
};
unsigned a;
};
int x;
int y;
};
struct something2 A2 = { {{.b = 'a'}}, .y=10, .x = 5 };
printf(" %d %d %d\n",A2.x,A2.y,A2.a);
struct something2 A3 = { {.a = 98}, .y=10, .x = 5 };
printf(" %d %d %c\n",A3.x,A3.y,A3.b);
5 10 97
5 10 b
Но лучше так не делать!
Ю.