[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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



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

 Но лучше так не делать!

 Ю.

Reply to: