+Invocation
+ cpp [-CEPR] [-Dname] ... [-Dname=def] ... [-Idirectory] ...
+ [-Uname] ... [<infile>] [<outfile>]
+
+ If there are two non-flag arguments then the first is the name of the
+ input file and the second is the name of the output file. If there is
+ one non-flag argument then it is the name of the input file and the
+ output is written on the standard output. If there are no non-flag
+ arguments then the input is taken from the standard input and the output
+ is written on the standard output. Flag arguments are:
+
+ -C retain comments in output
+ -Dname define name as "1"
+ -Dname=def define name as def
+ -E ignored
+ -Idirectory add directory to search list for #include files
+ -P don't insert lines "# 12 \"foo.c\"" into output
+ -R allow recursive macros
+ -Uname undefine name
+