Re: [PATCH v2 09/13] scripts: kernel-doc: parse next structs/unions

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

 



Em Thu, 28 Sep 2017 18:28:32 +0200
Markus Heiser <markus.heiser@xxxxxxxxxxx> escreveu:

> Hi Mauro,
> 
> > Am 27.09.2017 um 23:10 schrieb Mauro Carvalho Chehab <mchehab@xxxxxxxxxxxxxxxx>:

> > +It is possible to document nested structs unions, like::
> > +
> > +      /**
> > +       * struct nested_foobar - a struct with nested unions and structs
> > +       * @arg1: - first argument of anonymous union/anonymous struct
> > +       * @arg2: - second argument of anonymous union/anonymous struct
> > +       * @arg3: - third argument of anonymous union/anonymous struct
> > +       * @arg4: - fourth argument of anonymous union/anonymous struct
> > +       * @bar.st1.arg1 - first argument of struct st1 on union bar
> > +       * @bar.st1.arg2 - second argument of struct st1 on union bar
> > +       * @bar.st2.arg1 - first argument of struct st2 on union bar
> > +       * @bar.st2.arg2 - second argument of struct st2 on union bar  
> 
> Sorry, this example is totally broken --> below I attached a more
> elaborate example. 
> 
> /* parse-SNIP: my_struct */
> /**
> * struct my_struct - a struct with nested unions and structs
> * @arg1: first argument of anonymous union/anonymous struct
> * @arg2: second argument of anonymous union/anonymous struct
> * @arg3: third argument of anonymous union/anonymous struct
> * @arg4: fourth argument of anonymous union/anonymous struct
> * @bar.st1.arg1: first argument of struct st1 on union bar
> * @bar.st1.arg2: second argument of struct st1 on union bar
> * @bar.st2.arg1: first argument of struct st2 on union bar
> * @bar.st2.arg2: second argument of struct st2 on union bar
> * @bar.st3.arg2: second argument of struct st3 on union bar
> */
> struct my_struct {
>    /* Anonymous union/struct*/
>    union {
> 	struct {
> 	    __u8 arg1 : 1;
> 	    __u8 arg2 : 3;
> 	};
>        struct {
>            int arg1;
>            int arg2;
>        };

I added a:

	#define __u8 char

In order to compile the above. As reported by gcc 7, this is broken:

test2.h:22:16: error: duplicate member ‘arg1’
            int arg1;
                ^~~~
test2.h:23:16: error: duplicate member ‘arg2’
            int arg2;
                ^~~~

You can't have two symbols with the same name on different anonymous
structs.


Thanks,
Mauro



[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux