https://kristerw.blogspot.com/2017/09/useful-gcc-warning-opt...
https://kristerw.blogspot.com/2017/09/useful-gcc-warning-opt...
-Weverything should be thought of as a tool for discovering new warning flags relevant to your project. Add those flags, but don't enable -Weverything for routine builds, unless you're a masochist.
https://clang.llvm.org/docs/UsersManual.html#diagnostics-ena...
The problem with -Wall is that people use it with -Werror, thus compilers would have to be very conservative about adding new warnings to it. Hence the situation we are in with a few flags "above and beyond". Most of -Wpedantic for example is not something I'd want to break my build on.
The following stack overflow answer has some good example of other warnings you probably don't want, but would be included in -Weverything: https://stackoverflow.com/questions/11714827/how-to-turn-on-...
"People who want to get shit done", sure. Pragmatists, even.
The problem with ignoring warnings is that they tend to accumulate and before long you can't see the ones you really do need to pay attention to. And yes that means you have to take the time to cleanup on new compilers with more warnings.
Like enabling assertions or not, this is (a matter of opinion, and) a difference between "development" and "release" compilations. Ideally we would consistently use something like ./configure --devel for one and ./configure --release for the other. Other languages' build systems have this built in, and building a tarball with autotools used to do something similar, but if you just pull something off GitHub it's not clear what mode you'll end up with.
Makefile has this built in too; you'd just be saying "make development" instead of "make --development".
https://docs.microsoft.com/en-us/windows-hardware/drivers/de...