On Thu, 5 Aug 2021, Joe Perches wrote: > On Thu, 2021-08-05 at 20:17 +0200, Julia Lawall wrote: > > On Thu, 5 Aug 2021, Joe Perches wrote: > > > On Thu, 2021-08-05 at 05:27 -0700, Joe Perches wrote: > > > > On Thu, 2021-08-05 at 13:43 +0300, Dan Carpenter wrote: > > > > > The "= {};" style empty struct initializer is preferred over = {0}. > > > > > It avoids the situation where the first struct member is a pointer and > > > > > that generates a Sparse warning about assigning using zero instead of > > > > > NULL. Also it's just nicer to look at. > > > > > > Perhaps a cocci script like the below could help too: > > > > > > $ cat zero_init_struct.cocci > > > @@ > > > identifier name; > > > identifier t; > > > @@ > > > > > > struct name t = { > > > - 0 > > > }; > > > > > > @@ > > > identifier name; > > > identifier t; > > > identifier member; > > > @@ > > > > > > struct name t = { > > > ..., > > > .member = { > > > - 0 > > > }, > > > ..., > > > }; > > > > My test turns up over 1900 occurrences. There is the question of whether > > {} or { } is preferred. The above semantic patch replaces {0} by {} and > > ( 0 } by { }. > > I saw that and I don't recall how to force one style or another > to be output. If you remove something and put it back, then Coccinelle takes care of pretty printing it. So the following produces {} everywhere. Fortunately Dan seems to prefer that... @@ identifier name; identifier t; @@ struct name t = - {0} + {} ; @@ identifier name; identifier t; identifier member; @@ struct name t = { ..., .member = - {0} + {} , ..., }; julia