On Fri, 27 May 2011, Александр Седов wrote:
2011/5/25 Dmitry E. Oboukhov <un...@debian.org>:
тут наверно есть народ который 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;
};
В union можно инициализировать только первое поле, по спецификации.
Прошу учесть.
Так что так:
something x = {{a_val}, x_val, y_val};
Немного устаревшие сведения :). Я сам так думал, но вот
ISO/IEC 9899 (http://www.open-std.org/jtc1/sc22/wg14/)
утверждает следующее:
6.7.8 Initialization
....
38 EXAMPLE 13 Any member of a union can be initialized:
union { /* ... */ } u = { .any_member = 42 };
Так что в С99 можно union инициализовать через любое поле
по стандарту.
Ю.