The contents of definition are tokenized and processed as if they appeared during translation phase
three in a #define directive. In particular, the definition will be truncated by embedded newline
If you are invoking the preprocessor from a shell or shell-like program you may need to use the
shell's quoting syntax to protect characters such as spaces that have a meaning in the shell syntax.
If you wish to define a function-like macro on the command line, write its argument list with
surrounding parentheses before the equals sign (if any). Parentheses are meaningful to most shells,
so you will need to quote the option. With sh and csh, -D'name(args...)=definition' works.
-D and -U options are processed in the order they are given on the command line. All -imacrosfile
and -includefile options are processed after all -D and -U options.
Cancel any previous definition of name, either built in or provided with a -D option.