Issue
Beyond setting -Wall, and setting href="https://gcc.gnu.org/onlinedocs/gcc/C-Dialect-Options.html#index-std-1" rel="nofollow noreferrer">-std=XXX, what other really useful, but less known compiler flags are there for use in C?
I'm particularly interested in any additional warnings, and/or and turning warnings into errors in some cases to absolutely minimize any accidental type mismatches.
Solution
Several of the -f
code generation options are interesting:
-fverbose-asm
is useful if you're compiling with-S
to examine the assembly output - it adds some informative comments.-finstrument-functions
adds code to call user-supplied profiling functions at every function entry and exit point.--coverage
instruments the branches and calls in the program and creates a coverage notes file, so that when the program is run coverage data is produced that can be formatted by thegcov
program to help analysing test coverage.-fsanitize={address,thread,undefined}
enables the AddressSanitizer, ThreadSanitizer and UndefinedBehaviorSanitizer code sanitizers respectively. These instrument the program to check for various sorts of errors at runtime.
Previously this answer also mentioned -ftrapv
, however this functionality has been superseded by -fsanitize=signed-integer-overflow
which is one of the sanitizers enabled by -fsanitize=undefined
.
Answered By - caf Answer Checked By - David Marino (WPSolving Volunteer)