https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69602

--- Comment #15 from Eric Blake <eblake at redhat dot com> ---
(In reply to Martin Sebor from comment #14)
> I would suggest to keep the warning simple and avoid overdesigning it with
> workarounds for this case.  The solution in comment #12 (copied below) seems
> like a good approach for avoiding the duplication and the warning.  It's
> already commonly used to deal with non-standard implementation-specific
> macros that portable programs cannot otherwise rely on.
> 
>       1149        if (   cchRead < 0 
>       1150            && (   errno == EAGAIN 
>       1151    #if EAGAIN != EWOULDBLOCK 
>       1152                || errno == EWOULDBLOCK 
>       1153    #endif 
>       1154                ))

Yuck. Mid-expression #ifdefs are awful - I much prefer it when #ifdefs can be
limited to a per-statement or per-function scope.  You're seriously proposing
forcing software to uglify their code with mid-expression warnings to shut up
compiler warnings that only occur on platforms where the two values are
synonyms, and which can't even be portably seen as necessary when testing as
platforms where the two values are distinct?

Reply via email to