Indicate to the preprocessor that the input file has already been preprocessed. This suppresses
things like macro expansion, trigraph conversion, escaped newline splicing, and processing of most
directives. The preprocessor still recognizes and removes comments, so that you can pass a file
preprocessed with -C to the compiler without problems. In this mode the integrated preprocessor is
little more than a tokenizer for the front ends.
-fpreprocessed is implicit if the input file has one of the extensions .i, .ii or .mi. These are the
extensions that GCC uses for preprocessed files created by -save-temps.
When preprocessing, handle directives, but do not expand macros.
The option's behavior depends on the -E and -fpreprocessed options.
With -E, preprocessing is limited to the handling of directives such as "#define", "#ifdef", and
"#error". Other preprocessor operations, such as macro expansion and trigraph conversion are not
performed. In addition, the -dD option is implicitly enabled.
With -fpreprocessed, predefinition of command line and most builtin macros is disabled. Macros such
as "__LINE__", which are contextually dependent, are handled normally. This enables compilation of
files previously preprocessed with "-E -fdirectives-only".
With both -E and -fpreprocessed, the rules for -fpreprocessed take precedence. This enables full
preprocessing of files previously preprocessed with "-E -fdirectives-only".