1UCPP(1) General Commands Manual UCPP(1)
2
3
4
6 ucpp - C preprocessor
7
9 ucpp [ options ] [ file ]
10
12 ucpp is a C preprocessor mostly compatible with ISO-C99. It is rather
13 strict and uses only a small amount of memory. It uses standard input
14 as primary input if no file argument is given.
15
17 There are several classes of options.
18
19 Language Options
20
21 -C keep comments in the output.
22
23 -s if a rogue '#' is encountered, do not emit an error and keep it
24 in the output.
25
26 -l supress the emission of '#line' directives in the output.
27
28 -lg convert the '#line' to the gcc-style equivalent.
29
30 -CC disable C++-like comments (a '//' begins a comment, up to the
31 end of the line). Use this option to get closer to C90 behav‐
32 iour.
33
34 -a, -na
35 handle assertions (defined with #assert); -a also defines the
36 standard assertions #machine , #cpu and #system (see -e to get
37 the local definition of such assertions).
38
39 -a0 disable assertion support.
40
41 -V disable support for macros with a variable number of arguments:
42 in C99, a macro may be declared with ... as the last argument;
43 inside the replacement list, __VA_ARGS__ is replaced with the
44 optional extra arguments given in the call to the macro. Use
45 this option to get closer to C90 behaviour.
46
47 -u enable UTF-8 support: with this option, the source is considered
48 as an ISO/10646 source, encoded in UTF-8. Characters represented
49 as two bytes or more are considered as alphabetic characters,
50 like letters, and therefore usable in identifiers. These charac‐
51 ters hold the same syntactic value than the corresponding Uni‐
52 versal Character Names.
53
54 -X enable -a, -u and -Y. This should make ucpp behave closer to
55 what is requested from a "modern" C preprocessor.
56
57 -c90 enable -V and -CC, and do not define __STDC_VERSION__. This
58 should make ucpp mimic older C90 behaviour.
59
60 -t disable trigraph support; this seems to be required for some
61 legacy code.
62
63 Warning Options
64
65 -wt emit a final warning when trigraphs are encountered.
66
67 -wtt emit warnings for each trigraph encountered.
68
69 -wa emit annoying warnings (these are usually useless).
70
71 -w0 supress standard warnings.
72
73 Directory Options
74
75 -Idirectory
76
77 -I directory
78 add directory to the include path, before the standard include
79 path.
80
81 -Jdirectory
82
83 -J directory
84 add directory to the include path, after the standard include
85 path.
86
87 -zI do not use the standard (compile-time) include path.
88
89 -M emit only the names of encountered files, separated by spaces;
90 this is intended for automatic generation of Makefile dependen‐
91 cies.
92
93 -Ma do the same as -M but also for system files.
94
95 -o file
96 direct the ouput to file instead of standard output.
97
98 Macro Options
99
100 -Dmacro
101 predefine macro with content 1.
102
103 -Dmacro=def
104 predefine macro with the content def.
105
106 -Umacro
107 undefine macro.
108
109 -Y predefine system-dependant macros.
110
111 -Z do not predefine special macros such as __TIME__.
112
113 -Afoo(bar)
114 add foo(bar) to the list of assertions.
115
116 -Bfoo(bar)
117 remove foo(bar) of the list of assertions; you may also use
118 -Bfoo to remove all -Bfoo(xxx) from the list of assertions.
119
120 -d instead of normal output, emit '#define' directives representing
121 all macros defined during processing.
122
123 -e instead of normal output, emit '#assert' directives representing
124 all assertions defined during processing.
125
126 Miscellaneous Options
127
128 -v print version number, include path and (optionaly) defined
129 assertions.
130
131 -h print some help.
132
134 ucpp is not itself affected by environment variables. However, it uses
135 library functions that might be affected, depending on the system.
136
138 Thomas Pornin <pornin@bolet.org>
139
141 ucpp is considered stable software. However improbable it is, please
142 report bugs to the author (possibly with a file that exhibits the prob‐
143 lem) if the latest version, available from this site:
144
145 http://pornin.nerim.net/ucpp/
146
147 has the bug.
148
149
150
151 Oct 21 2000 UCPP(1)