It was thus said that the Great Bill Gunshannon via cctalk once stated: > On 1/29/21 4:12 PM, Will Cooke via cctalk wrote: > > > >>On 01/29/2021 2:58 PM Fred Cisin via cctalk <cctalk@classiccmp.org> wrote: > >> > > > >>'=' and '==' makes possible what is probably the most common error, and > >>which the compiler doesn't catch: > >>if (x = 3) . . . /* sets x to 3 and gives TRUE for the condition */ > >>I imagine that there are probably some pre-processors that would return a > >>WARNING for it. > >> > > > >Modern Visual Studio and GCC both flag the "=" in a condition, I believe. > >But if you're shipping code with 260+ warnings, who would see one more. > > And the problem here is really quite plain and simple. > Why are you shipping code with any warnings?
Because sometimes they aren't. Example: gcc -std=c99 -g -Wall -Wextra -pedantic -fPIC -g -shared -o lib/tcc.so src/tcc.c -ltcc src/tcc.c: In function cclua_get_symbol': src/tcc.c:528: warning: ISO C forbids assignment between function pointer and `void *' ISO C may forbid that, but POSIX requires it, and I'm compiling on a POSIX system, but there isn't (to my knowledge) a way to state that. Yes, I could probably surpresss that one warning, but for me, it's easier to ignore on POSIX systems. Also, have you tried clang with the highest warning level? It's useless. I tried it once, only to be told "warning: struct foo has padding bytes added" (or something to that effect). Okay, so I pack the structure, only to get "Warning: struct foo doesn't have any padding". Yean, real useful that. -spc