Jean, All, On 2013-07-12 11:07 +0200, Jean Delvare spake thusly: [--SNIP--] > > > > > +static int sym_rel_comp( const void *sym1, const void *sym2 ) > > > > > +{ > > > > > + struct sym_match *s1 = *(struct sym_match **)sym1; > > > > > + struct sym_match *s2 = *(struct sym_match **)sym2; > > > > > > > > You shouldn't need these casts. > > > > > > Probably not, indeed, but I like to write (and read) what I expect to > > > happen, and pointer arithmetics is always something I dread to foobar. > > > > In fact, we need the cast, otherwise gcc whines about const/non-const. > > And quite rightly so, as you are taking const pointers (i.e. the caller > told you you are _not_ allowed to change the contents) and making them > non-const pointers (i.e. you give yourself the right to still change the > contents.) It happens that your function doesn't actually change the > contents, so no harm done, but this is still conceptually wrong. > Preserving the const nature of pointers down the call chain lets the > compiler warn you if a function changes data it was not supposed to. > > So what you want to do is: > > static int sym_rel_comp(const void *sym1, const void *sym2) > { > const struct sym_match *s1 = sym1; > const struct sym_match *s2 = sym2; > > This is both concise and correct, and it makes gcc happy. Yes, that's what I thought to, and what I was about to do. Thanks for confirming this! :-) Regards, Yann E. MORIN. -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' -- To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html