How to get gcc to skip errors, but still output th

2020-04-06 16:18发布

问题:

is it possible to force gcc to report errors, but keep compiling past them? Essentially I'm trying to generate a list of errors in a .c file, but gcc always terminates at the first error. I've been googling for a while and this isn't an obvious one to solve from what I can tell.

回答1:

Up-to-date versions of GCC will attempt to skip certain errors where possible.

Say the body of foo(){... contains a const-violation. The translation unit will not produce an object file but any decent compiler will continue past this error into bar(){...

Other errors are unrecoverable. If you miss out some curly braces there's no reasonable guess that can be mades as to how to proceed.



回答2:

GCC terminates when it can't go further.

If a compiler encounters an error, it has to guess what the correct code should be and try to follow. Effectively that means that you always need to fix the first error and re-run the compilations, since the rest will be nonsense.

Make sure that you haven't turned -Wfatal-errors on.



回答3:

From gcc online doc:

-fmax-errors=n

Limits the maximum number of error messages to n, at which point GCC bails out rather than attempting to continue processing the source code. If n is 0 (the default), there is no limit on the number of error messages produced. If -Wfatal-errors is also specified, then -Wfatal-errors takes precedence over this option.