The compiler uses a warning in the case of
stderr
because it implies a macro that makes a function call (the new stdio library is thread safe). The compiler doesn't emit any warning because at compilation time it doesn't know if the external function calls of
printf()
or
stderr
will have collateral effects, so it doesn't emit a warning, while something like
0;
or any constant expression would. But it is not an error. It could be the result of some programmer's idiom in a macro expansion. So In my opinion, having all those warnings active only confounds novel programmers, ... —
Luis Colorado 44 secs ago