Eric Blake <ebl...@redhat.com> wrote: > On 11/27/2013 09:53 AM, Joerg Schilling wrote: > >> The C standard does not document that '(void) write(...)' is required to > >> avoid diagnostics, so I don't see the gcc behavior as a bug (yes, it's > >> annoying behavior, but that doesn't make it incorrect behavior). > > > > Well, there is a more than 30 year history of lint that causes > > '(void) write(...)' to be accepted without a warning. > > So? Lint is not gcc, and gcc is not lint. Different compilers have > different capabilities at producing warnings, and you cannot expect that > something that works warning-free on one compiler will remain > warning-free on other compilers (even later versions of the same > compiler). Warnings are an art form, and not an exact science, > precisely because the C standard does not (rather, cannot) specify them.
If you like to stay in an environment that is based on GCC only, you may use ignore_value(). If you however like to write portable code, you cannot expect something like ignore_value() to be available. Given the fact that other compilers honor the (void) cast, it seems that gcc is trying to be different in a way that just causes pain but that does not give extra value. Jörg -- EMail:jo...@schily.isdn.cs.tu-berlin.de (home) Jörg Schilling D-13353 Berlin j...@cs.tu-berlin.de (uni) joerg.schill...@fokus.fraunhofer.de (work) Blog: http://schily.blogspot.com/ URL: http://cdrecord.berlios.de/private/ ftp://ftp.berlios.de/pub/schily