Re: структуры в C/gcc

2011-05-30 Пенетрантность Александр Седов
мы микроконтроллеры программируем. поскольку там на борту всего 0.5-1К RAM то эта RAM экономится жестко. соответственно всякие поля зачастую упаковываются в байты: struct something {    uint8_t type;    union {        struct {            unsigned flag1:1;            unsigned field1:5;  

Re: структуры в C/gcc

2011-05-30 Пенетрантность Александр Седов
28 мая 2011 г. 20:34 пользователь yuri.nefe...@gmail.com написал: On Sat, 28 May 2011, Dmitry E. Oboukhov wrote: мы микроконтроллеры программируем. поскольку там на борту всего 0.5-1К RAM то эта RAM экономится жестко. соответственно всякие поля зачастую упаковываются в байты: struct

Re: структуры в C/gcc

2011-05-28 Пенетрантность yuri . nefedov
On Sat, 28 May 2011, Dmitry E. Oboukhov wrote: мы микроконтроллеры программируем. поскольку там на борту всего 0.5-1К RAM то эта RAM экономится жестко. соответственно всякие поля зачастую упаковываются в байты: struct something { uint8_t type; union { struct {

Re: структуры в C/gcc

2011-05-27 Пенетрантность Александр Седов
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 }; а вот

Re: структуры в C/gcc

2011-05-27 Пенетрантность yuri . nefedov
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 = {

Re: структуры в C/gcc

2011-05-27 Пенетрантность Александр Седов
 Немного устаревшие сведения :). Я сам так думал, но вот  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

Re: структуры в C/gcc

2011-05-27 Пенетрантность Dmitry E. Oboukhov
 Немного устаревшие сведения :). Я сам так думал, но вот  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 };  Так что в

Re: структуры в C/gcc

2011-05-25 Пенетрантность Konstantin Matyukhin
Может быть поможет цитата из C1X Draft: Unnamed members of objects of structure and union type do not participate in initialization. Unnamed members of structure objects have indeterminate value even after initialization. -- С уважением, Константин Матюхин

Re: структуры в C/gcc

2011-05-25 Пенетрантность yuri . nefedov
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 }; а вот если

Re: структуры в C/gcc

2011-05-25 Пенетрантность Dmitry E. Oboukhov
Может быть поможет цитата из C1X Draft: Unnamed members of objects of structure and union type do not participate in initialization. Unnamed members of structure objects have indeterminate value even after initialization. не то чтобы она помогла, но ясность внесла, спасибо! -- . ''`.

Re: структуры в C/gcc

2011-05-25 Пенетрантность yuri . nefedov
Забыл добавить, что это расширение над ansi-C. См. например: http://gcc.gnu.org/onlinedocs/gcc/Unnamed-Fields.html#Unnamed-Fields В стандартном си неименованными могут быть только поля в bit field, ну и всякая экзотика типа неименованный массив на который хранится указатель: int* p =