> Am 29.09.2017 um 17:29 schrieb Mauro Carvalho Chehab <mchehab@xxxxxxxxxxxxxxxx>: > > 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 With totally broken I mean "broken in sense of kernel-doc markup". E.g. the missing ":" at the end of "@bar.st2.arg2:" instead, there is a minus "-". And in the first example you gave, there also missed a ";" at the end of some of the elements. Anyway, the example above is obsolete. >>> >> >> 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. Ah, ok lets fix the example. -- Markus -- -- To unsubscribe from this list: send the line "unsubscribe linux-doc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html