On Fri, 27 May 2011, Александр Седов wrote:
2011/5/25 Dmitry E. Oboukhov <[email protected]>:тут наверно есть народ который 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 инициализовать через любое поле по стандарту. Ю.

