You copied the Doc URL to your clipboard.


This option relaxes certain rules when producing preprocessed compiler output, to provide greater flexibility when preprocessing assembly language source code.


Use this option to relax certain preprocessor rules when generating preprocessed output from assembly language source files. Specifically, the following special cases are permitted that would normally produce a compiler error:

  • Lines beginning with a '#' character followed by a space and a number, that would normally indicate a GNU non-standard line marker, are ignored and copied verbatim into the preprocessed output.

  • Unrecognized preprocessing directives are ignored and copied verbatim into the preprocessed output.

  • Where the token-paste '#' operator is used in a function-like macro, if it is used with a name that is not a macro parameter, the name is copied verbatim into the preprocessed output together with the preceding '#' character.

    For example if the source file contains:

    # define mymacro(arg) foo #bar arg

    using the --preprocess_assembly option produces a preprocessed output that contains:

    foo #bar x


This option is only valid when producing preprocessed output without continuing compilation, for example when using the -E, -P or -C command line options. It is ignored in other cases.

See also