LINUX.ORG.RU

необычное объявление структут в сорцах ядра


0

0

Находил где-то в сорцах ядра объявления структур какие-то такие:


struct somestruct {
    .a = 13;
    .b = 114;
    .c = 24324;
};

как-то так.. как-то необычно.

привык такому объявлению:

struct somestruct {
  int a = 13;
  int b = 114;
  int c = 24324;
};


причем вроде второго варианта, привычного, больше в сорцах, первый че-то не могу найти, но точно помню, что видел его :)

что это за объявление такое необычное и как все-таки оно праивльно записывается?

и зачем вообще в сорцах используется два варианта? зачем там такое странное объявление?
anonymous

Re: необычное объявление структут в сорцах ядра

Это не объявление, а инициализация. Есть в стандарте C99.

anonymous ()

Re: необычное объявление структут в сорцах ядра

> причем вроде второго варианта, привычного, больше в сорцах, первый че-то не могу найти, но точно помню, что видел его :)

эээ... простите, а давно у вас получалось откомпилировать код со вторым вариантом :-? потому то как раз этого ни в каком стандарте нет.

// wbr

klalafuda ★☆☆ ()

Re: необычное объявление структут в сорцах ядра

>зачем там такое странное объявление?

Конструкция типа .x=123 позволяет избирательно инициализировать только те поля, которые нужны.

anonymous ()

Re: необычное объявление структут в сорцах ядра

а.. значит в C99 появилось :)
все, спасибо, уже нашел про это в справочнике по С :))

P.S... просто интересно очень =[

klalafuda,

что значит

"// wbr" ?..

anonymous ()

Re: необычное объявление структут в сорцах ядра

> что значит
> "// wbr" ?..

Warner Brothers Records
нас так манагеры и в хвост и в гриву заставляют подписываться везде и всегда. иначе говорят премиальных не видать как собственных ушей. пиарятся наверное.

// wbr

klalafuda ★☆☆ ()

Re: необычное объявление структут в сорцах ядра

>Находил где-то в сорцах ядра объявления структур какие-то такие:
>struct somestruct {
>    .a = 13;
>    .b = 114;
>    .c = 24324;
>};

во-1-ых. таких объявлений там нет. ты не очень внимательно смотрел.
должно быть ты видел что-то вроде
struct somestruct someval = {
    .a = 13;
    .b = 114;
    .c = 24324;
};

как уже сказали, такая форма жестко привязывает значение и поле,
которому оно должно соответствовать. сделано на случай если кому-то
очень захочется поменять/добавить строки в объявлении стркутуры.

>привык такому объявлению:
>
>struct somestruct {
>  int a = 13;
>  int b = 114;
>  int c = 24324;
>};

и это (уже) не объявление. старый стандарт, кажется позволял
объявлять так структуры. новый так не позволяет.

xydo ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.