--include option opens the given file, evaluates it, and then adds the resulting text to the output.
man page, the HTML-like mode is defined like this
-U "<#" ">" "\B" "|" ">" "<" ">" "#" "\\"
-U parameter takes 9 arguments, also described by the
-U arg1 ... arg9
User-defined mode. The nine following command-line arguments are taken to be respectively the macro start
sequence, the macro end sequence for a call without arguments, the argument start sequence, the argument
separator, the argument end sequence, the list of characters to stack for argument balancing, the list of
characters to unstack, the string to be used for referring to an argument by number, and finally the
quote character (if there is none an empty string should be provided). These settings apply both to user
macros and to meta-macros, unless the -M option is used to define other settings for meta-macros. See the
section on syntax specification for more details.
What I understand from the manual is that no, you cannot avoid the empty lines using the HTML-like mode. I also couldn't find any way to exclude the included file from the output. What you could do however is define your own "user mode", copying HTML mode (note the added
-U "<#" ">\n" "\B" "|" ">\n" "<" ">" "#" "\\"
This mode will consume an extra
\n symbol when parsing, which will not be in the final output. But I think this introduces some limitations compared to the default HTML mode because of the extra
Alternatively you could define a custom delimited in the macros file, like this:
<#define welcome|Hello, Fool!>
gpp has created the final output, you remove only the output from the macros file:
gpp -H --include macros.gpp -DFOO input.txt | perl -p0e "s/START.*END\n//s"