]>
Commit | Line | Data |
---|---|---|
40adaa27 NB |
1 | @c Copyright (c) 1999, 2000, 2001, 2002 |
2 | @c Free Software Foundation, Inc. | |
3 | @c This is part of the CPP and GCC manuals. | |
4 | @c For copying conditions, see the file gcc.texi. | |
5 | ||
6 | @c --------------------------------------------------------------------- | |
7 | @c Options affecting the preprocessor | |
8 | @c --------------------------------------------------------------------- | |
9 | ||
10 | @c If this file is included with the flag ``cppmanual'' set, it is | |
11 | @c formatted for inclusion in the CPP manual; otherwise the main GCC manual. | |
12 | ||
13 | @table @gcctabopt | |
14 | @item -D @var{name} | |
15 | @opindex D | |
16 | Predefine @var{name} as a macro, with definition @code{1}. | |
17 | ||
18 | @item -D @var{name}=@var{definition} | |
19 | Predefine @var{name} as a macro, with definition @var{definition}. | |
20 | There are no restrictions on the contents of @var{definition}, but if | |
21 | you are invoking the preprocessor from a shell or shell-like program you | |
22 | may need to use the shell's quoting syntax to protect characters such as | |
23 | spaces that have a meaning in the shell syntax. | |
24 | ||
25 | If you wish to define a function-like macro on the command line, write | |
26 | its argument list with surrounding parentheses before the equals sign | |
27 | (if any). Parentheses are meaningful to most shells, so you will need | |
28 | to quote the option. With @command{sh} and @command{csh}, | |
29 | @option{-D'@var{name}(@var{args@dots{}})=@var{definition}'} works. | |
30 | ||
31 | @option{-D} and @option{-U} options are processed in the order they | |
32 | are given on the command line. All @option{-imacros @var{file}} and | |
33 | @option{-include @var{file}} options are processed after all | |
34 | @option{-D} and @option{-U} options. | |
35 | ||
36 | @item -U @var{name} | |
37 | @opindex U | |
38 | Cancel any previous definition of @var{name}, either built in or | |
39 | provided with a @option{-D} option. | |
40 | ||
41 | @item -undef | |
42 | @opindex undef | |
43 | Do not predefine any system-specific macros. The common predefined | |
44 | macros remain defined. | |
45 | ||
46 | @item -I @var{dir} | |
47 | @opindex I | |
48 | Add the directory @var{dir} to the list of directories to be searched | |
49 | for header files. | |
50 | @ifset cppmanual | |
51 | @xref{Search Path}. | |
52 | @end ifset | |
53 | Directories named by @option{-I} are searched before the standard | |
54 | system include directories. | |
55 | ||
56 | It is dangerous to specify a standard system include directory in an | |
57 | @option{-I} option. This defeats the special treatment of system | |
58 | headers | |
59 | @ifset cppmanual | |
60 | (@pxref{System Headers}) | |
61 | @end ifset | |
62 | . It can also defeat the repairs to buggy system headers which GCC | |
63 | makes when it is installed. | |
64 | ||
65 | @item -o @var{file} | |
66 | @opindex o | |
67 | Write output to @var{file}. This is the same as specifying @var{file} | |
68 | as the second non-option argument to @command{cpp}. @command{gcc} has a | |
69 | different interpretation of a second non-option argument, so you must | |
70 | use @option{-o} to specify the output file. | |
71 | ||
72 | @item -Wall | |
73 | @opindex Wall | |
74 | Turns on all optional warnings which are desirable for normal code. At | |
75 | present this is @option{-Wcomment} and @option{-Wtrigraphs}. Note that | |
76 | many of the preprocessor's warnings are on by default and have no | |
77 | options to control them. | |
78 | ||
79 | @item -Wcomment | |
80 | @itemx -Wcomments | |
81 | @opindex Wcomment | |
82 | @opindex Wcomments | |
83 | Warn whenever a comment-start sequence @samp{/*} appears in a @samp{/*} | |
84 | comment, or whenever a backslash-newline appears in a @samp{//} comment. | |
85 | (Both forms have the same effect.) | |
86 | ||
87 | @item -Wtrigraphs | |
88 | @opindex Wtrigraphs | |
89 | Warn if any trigraphs are encountered. This option used to take effect | |
90 | only if @option{-trigraphs} was also specified, but now works | |
91 | independently. Warnings are not given for trigraphs within comments, as | |
92 | they do not affect the meaning of the program. | |
93 | ||
94 | @item -Wtraditional | |
95 | @opindex Wtraditional | |
96 | Warn about certain constructs that behave differently in traditional and | |
97 | ISO C@. Also warn about ISO C constructs that have no traditional C | |
98 | equivalent, and problematic constructs which should be avoided. | |
99 | @ifset cppmanual | |
100 | @xref{Traditional Mode}. | |
101 | @end ifset | |
102 | ||
103 | @item -Wimport | |
104 | @opindex Wimport | |
105 | Warn the first time @samp{#import} is used. | |
106 | ||
107 | @item -Wundef | |
108 | @opindex Wundef | |
109 | Warn whenever an identifier which is not a macro is encountered in an | |
110 | @samp{#if} directive, outside of @samp{defined}. Such identifiers are | |
111 | replaced with zero. | |
112 | ||
909de5da PE |
113 | @item -Wendif-labels |
114 | @opindex Wendif-labels | |
115 | Warn whenever an @samp{#else} or an @samp{#endif} are followed by text. | |
116 | This usually happens in code of the form | |
117 | ||
118 | @smallexample | |
119 | #if FOO | |
120 | @dots{} | |
121 | #else FOO | |
122 | @dots{} | |
123 | #endif FOO | |
124 | @end smallexample | |
125 | ||
126 | @noindent | |
127 | The second and third @code{FOO} should be in comments, but often are not | |
128 | in older programs. This warning is on by default. | |
129 | ||
40adaa27 NB |
130 | @item -Werror |
131 | @opindex Werror | |
132 | Make all warnings into hard errors. Source code which triggers warnings | |
133 | will be rejected. | |
134 | ||
135 | @item -Wsystem-headers | |
136 | @opindex Wsystem-headers | |
137 | Issue warnings for code in system headers. These are normally unhelpful | |
138 | in finding bugs in your own code, therefore suppressed. If you are | |
139 | responsible for the system library, you may want to see them. | |
140 | ||
141 | @item -w | |
142 | @opindex w | |
143 | Suppress all warnings, including those which GNU CPP issues by default. | |
144 | ||
145 | @item -pedantic | |
146 | @opindex pedantic | |
147 | Issue all the mandatory diagnostics listed in the C standard. Some of | |
148 | them are left out by default, since they trigger frequently on harmless | |
149 | code. | |
150 | ||
151 | @item -pedantic-errors | |
152 | @opindex pedantic-errors | |
153 | Issue all the mandatory diagnostics, and make all mandatory diagnostics | |
154 | into errors. This includes mandatory diagnostics that GCC issues | |
155 | without @samp{-pedantic} but treats as warnings. | |
156 | ||
157 | @item -M | |
158 | @opindex M | |
159 | @cindex make | |
160 | @cindex dependencies, make | |
161 | Instead of outputting the result of preprocessing, output a rule | |
162 | suitable for @command{make} describing the dependencies of the main | |
163 | source file. The preprocessor outputs one @command{make} rule containing | |
164 | the object file name for that source file, a colon, and the names of all | |
165 | the included files, including those coming from @option{-include} or | |
166 | @option{-imacros} command line options. | |
167 | ||
168 | Unless specified explicitly (with @option{-MT} or @option{-MQ}), the | |
169 | object file name consists of the basename of the source file with any | |
170 | suffix replaced with object file suffix. If there are many included | |
171 | files then the rule is split into several lines using @samp{\}-newline. | |
172 | The rule has no commands. | |
173 | ||
174 | This option does not suppress the preprocessor's debug output, such as | |
175 | @option{-dM}. To avoid mixing such debug output with the dependency | |
176 | rules you should explicitly specify the dependency output file with | |
177 | @option{-MF}, or use an environment variable like | |
caba570b | 178 | @env{DEPENDENCIES_OUTPUT} (@pxref{Environment Variables}). Debug output |
40adaa27 NB |
179 | will still be sent to the regular output stream as normal. |
180 | ||
181 | Passing @option{-M} to the driver implies @option{-E}. | |
182 | ||
183 | @item -MM | |
184 | @opindex MM | |
185 | Like @option{-M} but do not mention header files that are found in | |
186 | system header directories, nor header files that are included, | |
187 | directly or indirectly, from such a header. | |
188 | ||
189 | This implies that the choice of angle brackets or double quotes in an | |
190 | @samp{#include} directive does not in itself determine whether that | |
191 | header will appear in @option{-MM} dependency output. This is a | |
192 | slight change in semantics from GCC versions 3.0 and earlier. | |
193 | ||
194 | @item -MF @var{file} | |
195 | @opindex MF | |
196 | @anchor{-MF} | |
197 | When used with @option{-M} or @option{-MM}, specifies a | |
198 | file to write the dependencies to. If no @option{-MF} switch is given | |
199 | the preprocessor sends the rules to the same place it would have sent | |
200 | preprocessed output. | |
201 | ||
202 | When used with the driver options @option{-MD} or @option{-MMD}, | |
203 | @option{-MF} overrides the default dependency output file. | |
204 | ||
205 | @item -MG | |
206 | @opindex MG | |
207 | When used with @option{-M} or @option{-MM}, @option{-MG} says to treat missing | |
208 | header files as generated files and assume they live in the same | |
209 | directory as the source file. It suppresses preprocessed output, as a | |
210 | missing header file is ordinarily an error. | |
211 | ||
212 | This feature is used in automatic updating of makefiles. | |
213 | ||
214 | @item -MP | |
215 | @opindex MP | |
216 | This option instructs CPP to add a phony target for each dependency | |
217 | other than the main file, causing each to depend on nothing. These | |
218 | dummy rules work around errors @command{make} gives if you remove header | |
219 | files without updating the @file{Makefile} to match. | |
220 | ||
221 | This is typical output: | |
222 | ||
223 | @example | |
224 | test.o: test.c test.h | |
225 | ||
226 | test.h: | |
227 | @end example | |
228 | ||
229 | @item -MT @var{target} | |
230 | @opindex MT | |
231 | ||
232 | Change the target of the rule emitted by dependency generation. By | |
233 | default CPP takes the name of the main input file, including any path, | |
234 | deletes any file suffix such as @samp{.c}, and appends the platform's | |
235 | usual object suffix. The result is the target. | |
236 | ||
237 | An @option{-MT} option will set the target to be exactly the string you | |
238 | specify. If you want multiple targets, you can specify them as a single | |
239 | argument to @option{-MT}, or use multiple @option{-MT} options. | |
240 | ||
241 | For example, @option{@w{-MT '$(objpfx)foo.o'}} might give | |
242 | ||
243 | @example | |
244 | $(objpfx)foo.o: foo.c | |
245 | @end example | |
246 | ||
247 | @item -MQ @var{target} | |
248 | @opindex MQ | |
249 | ||
250 | Same as @option{-MT}, but it quotes any characters which are special to | |
251 | Make. @option{@w{-MQ '$(objpfx)foo.o'}} gives | |
252 | ||
253 | @example | |
254 | $$(objpfx)foo.o: foo.c | |
255 | @end example | |
256 | ||
257 | The default target is automatically quoted, as if it were given with | |
258 | @option{-MQ}. | |
259 | ||
260 | @item -MD | |
261 | @opindex MD | |
262 | @option{-MD} is equivalent to @option{-M -MF @var{file}}, except that | |
263 | @option{-E} is not implied. The driver determines @var{file} based on | |
264 | whether an @option{-o} option is given. If it is, the driver uses its | |
265 | argument but with a suffix of @file{.d}, otherwise it take the | |
266 | basename of the input file and applies a @file{.d} suffix. | |
267 | ||
268 | If @option{-MD} is used in conjunction with @option{-E}, any | |
269 | @option{-o} switch is understood to specify the dependency output file | |
270 | (but @pxref{-MF}), but if used without @option{-E}, each @option{-o} | |
271 | is understood to specify a target object file. | |
272 | ||
273 | Since @option{-E} is not implied, @option{-MD} can be used to generate | |
274 | a dependency output file as a side-effect of the compilation process. | |
275 | ||
276 | @item -MMD | |
277 | @opindex MMD | |
278 | Like @option{-MD} except mention only user header files, not system | |
279 | -header files. | |
280 | ||
281 | @item -x c | |
282 | @itemx -x c++ | |
283 | @itemx -x objective-c | |
284 | @itemx -x assembler-with-cpp | |
285 | @opindex x | |
286 | Specify the source language: C, C++, Objective-C, or assembly. This has | |
287 | nothing to do with standards conformance or extensions; it merely | |
288 | selects which base syntax to expect. If you give none of these options, | |
289 | cpp will deduce the language from the extension of the source file: | |
290 | @samp{.c}, @samp{.cc}, @samp{.m}, or @samp{.S}. Some other common | |
291 | extensions for C++ and assembly are also recognized. If cpp does not | |
292 | recognize the extension, it will treat the file as C; this is the most | |
293 | generic mode. | |
294 | ||
295 | @strong{Note:} Previous versions of cpp accepted a @option{-lang} option | |
296 | which selected both the language and the standards conformance level. | |
297 | This option has been removed, because it conflicts with the @option{-l} | |
298 | option. | |
299 | ||
300 | @item -std=@var{standard} | |
301 | @itemx -ansi | |
302 | @opindex ansi | |
303 | @opindex std= | |
304 | Specify the standard to which the code should conform. Currently cpp | |
305 | only knows about the standards for C; other language standards will be | |
306 | added in the future. | |
307 | ||
308 | @var{standard} | |
309 | may be one of: | |
310 | @table @code | |
311 | @item iso9899:1990 | |
312 | @itemx c89 | |
313 | The ISO C standard from 1990. @samp{c89} is the customary shorthand for | |
314 | this version of the standard. | |
315 | ||
316 | The @option{-ansi} option is equivalent to @option{-std=c89}. | |
317 | ||
318 | @item iso9899:199409 | |
319 | The 1990 C standard, as amended in 1994. | |
320 | ||
321 | @item iso9899:1999 | |
322 | @itemx c99 | |
323 | @itemx iso9899:199x | |
324 | @itemx c9x | |
325 | The revised ISO C standard, published in December 1999. Before | |
326 | publication, this was known as C9X@. | |
327 | ||
328 | @item gnu89 | |
329 | The 1990 C standard plus GNU extensions. This is the default. | |
330 | ||
331 | @item gnu99 | |
332 | @itemx gnu9x | |
333 | The 1999 C standard plus GNU extensions. | |
334 | @end table | |
335 | ||
336 | @item -I- | |
337 | @opindex I- | |
338 | Split the include path. Any directories specified with @option{-I} | |
339 | options before @option{-I-} are searched only for headers requested with | |
340 | @code{@w{#include "@var{file}"}}; they are not searched for | |
341 | @code{@w{#include <@var{file}>}}. If additional directories are | |
342 | specified with @option{-I} options after the @option{-I-}, those | |
343 | directories are searched for all @samp{#include} directives. | |
344 | ||
345 | In addition, @option{-I-} inhibits the use of the directory of the current | |
346 | file directory as the first search directory for @code{@w{#include | |
347 | "@var{file}"}}. | |
348 | @ifset cppmanual | |
349 | @xref{Search Path}. | |
350 | @end ifset | |
351 | ||
352 | @item -nostdinc | |
353 | @opindex nostdinc | |
354 | Do not search the standard system directories for header files. | |
355 | Only the directories you have specified with @option{-I} options | |
356 | (and the directory of the current file, if appropriate) are searched. | |
357 | ||
358 | @item -nostdinc++ | |
359 | @opindex nostdinc++ | |
360 | Do not search for header files in the C++-specific standard directories, | |
361 | but do still search the other standard directories. (This option is | |
362 | used when building the C++ library.) | |
363 | ||
364 | @item -include @var{file} | |
365 | @opindex include | |
366 | Process @var{file} as if @code{#include "file"} appeared as the first | |
367 | line of the primary source file. However, the first directory searched | |
368 | for @var{file} is the preprocessor's working directory @emph{instead of} | |
369 | the directory containing the main source file. If not found there, it | |
370 | is searched for in the remainder of the @code{#include "@dots{}"} search | |
371 | chain as normal. | |
372 | ||
373 | If multiple @option{-include} options are given, the files are included | |
374 | in the order they appear on the command line. | |
375 | ||
376 | @item -imacros @var{file} | |
377 | @opindex imacros | |
378 | Exactly like @option{-include}, except that any output produced by | |
379 | scanning @var{file} is thrown away. Macros it defines remain defined. | |
380 | This allows you to acquire all the macros from a header without also | |
381 | processing its declarations. | |
382 | ||
383 | All files specified by @option{-imacros} are processed before all files | |
384 | specified by @option{-include}. | |
385 | ||
386 | @item -idirafter @var{dir} | |
387 | @opindex idirafter | |
388 | Search @var{dir} for header files, but do it @emph{after} all | |
389 | directories specified with @option{-I} and the standard system directories | |
390 | have been exhausted. @var{dir} is treated as a system include directory. | |
391 | ||
392 | @item -iprefix @var{prefix} | |
393 | @opindex iprefix | |
394 | Specify @var{prefix} as the prefix for subsequent @option{-iwithprefix} | |
395 | options. If the prefix represents a directory, you should include the | |
396 | final @samp{/}. | |
397 | ||
398 | @item -iwithprefix @var{dir} | |
399 | @itemx -iwithprefixbefore @var{dir} | |
400 | @opindex iwithprefix | |
401 | @opindex iwithprefixbefore | |
402 | Append @var{dir} to the prefix specified previously with | |
403 | @option{-iprefix}, and add the resulting directory to the include search | |
404 | path. @option{-iwithprefixbefore} puts it in the same place @option{-I} | |
405 | would; @option{-iwithprefix} puts it where @option{-idirafter} would. | |
406 | ||
407 | Use of these options is discouraged. | |
408 | ||
409 | @item -isystem @var{dir} | |
410 | @opindex isystem | |
411 | Search @var{dir} for header files, after all directories specified by | |
412 | @option{-I} but before the standard system directories. Mark it | |
413 | as a system directory, so that it gets the same special treatment as | |
414 | is applied to the standard system directories. | |
415 | @ifset cppmanual | |
416 | @xref{System Headers}. | |
417 | @end ifset | |
418 | ||
419 | @item -fpreprocessed | |
420 | @opindex fpreprocessed | |
421 | Indicate to the preprocessor that the input file has already been | |
422 | preprocessed. This suppresses things like macro expansion, trigraph | |
423 | conversion, escaped newline splicing, and processing of most directives. | |
424 | The preprocessor still recognizes and removes comments, so that you can | |
425 | pass a file preprocessed with @option{-C} to the compiler without | |
426 | problems. In this mode the integrated preprocessor is little more than | |
427 | a tokenizer for the front ends. | |
428 | ||
429 | @option{-fpreprocessed} is implicit if the input file has one of the | |
430 | extensions @samp{.i}, @samp{.ii} or @samp{.mi}. These are the | |
431 | extensions that GCC uses for preprocessed files created by | |
432 | @option{-save-temps}. | |
433 | ||
434 | @item -ftabstop=@var{width} | |
435 | @opindex ftabstop | |
436 | Set the distance between tab stops. This helps the preprocessor report | |
437 | correct column numbers in warnings or errors, even if tabs appear on the | |
438 | line. If the value is less than 1 or greater than 100, the option is | |
439 | ignored. The default is 8. | |
440 | ||
441 | @item -fno-show-column | |
442 | @opindex fno-show-column | |
443 | Do not print column numbers in diagnostics. This may be necessary if | |
444 | diagnostics are being scanned by a program that does not understand the | |
445 | column numbers, such as @command{dejagnu}. | |
446 | ||
447 | @item -A @var{predicate}=@var{answer} | |
448 | @opindex A | |
449 | Make an assertion with the predicate @var{predicate} and answer | |
450 | @var{answer}. This form is preferred to the older form @option{-A | |
451 | @var{predicate}(@var{answer})}, which is still supported, because | |
452 | it does not use shell special characters. | |
453 | @ifset cppmanual | |
454 | @xref{Assertions}. | |
455 | @end ifset | |
456 | ||
457 | @item -A -@var{predicate}=@var{answer} | |
458 | Cancel an assertion with the predicate @var{predicate} and answer | |
459 | @var{answer}. | |
460 | ||
461 | @item -A- | |
462 | @opindex A- | |
463 | Cancel all predefined assertions and all assertions preceding it on | |
464 | the command line. Also, undefine all predefined macros and all | |
465 | macros preceding it on the command line. (This is a historical wart and | |
466 | may change in the future.) | |
467 | ||
468 | @item -dCHARS | |
469 | @var{CHARS} is a sequence of one or more of the following characters, | |
470 | and must not be preceded by a space. Other characters are interpreted | |
471 | by the compiler proper, or reserved for future versions of GCC, and so | |
472 | are silently ignored. If you specify characters whose behavior | |
473 | conflicts, the result is undefined. | |
474 | ||
475 | @table @samp | |
476 | @item M | |
477 | @opindex dM | |
478 | Instead of the normal output, generate a list of @samp{#define} | |
479 | directives for all the macros defined during the execution of the | |
480 | preprocessor, including predefined macros. This gives you a way of | |
481 | finding out what is predefined in your version of the preprocessor. | |
482 | Assuming you have no file @file{foo.h}, the command | |
483 | ||
484 | @example | |
485 | touch foo.h; cpp -dM foo.h | |
486 | @end example | |
487 | ||
488 | @noindent | |
489 | will show all the predefined macros. | |
490 | ||
491 | @item D | |
492 | @opindex dD | |
493 | Like @samp{M} except in two respects: it does @emph{not} include the | |
494 | predefined macros, and it outputs @emph{both} the @samp{#define} | |
495 | directives and the result of preprocessing. Both kinds of output go to | |
496 | the standard output file. | |
497 | ||
498 | @item N | |
499 | @opindex dN | |
500 | Like @samp{D}, but emit only the macro names, not their expansions. | |
501 | ||
502 | @item I | |
503 | @opindex dI | |
504 | Output @samp{#include} directives in addition to the result of | |
505 | preprocessing. | |
506 | @end table | |
507 | ||
508 | @item -P | |
509 | @opindex P | |
510 | Inhibit generation of linemarkers in the output from the preprocessor. | |
511 | This might be useful when running the preprocessor on something that is | |
512 | not C code, and will be sent to a program which might be confused by the | |
513 | linemarkers. | |
514 | @ifset cppmanual | |
515 | @xref{Preprocessor Output}. | |
516 | @end ifset | |
517 | ||
518 | @item -C | |
519 | @opindex C | |
520 | Do not discard comments. All comments are passed through to the output | |
521 | file, except for comments in processed directives, which are deleted | |
522 | along with the directive. | |
523 | ||
524 | You should be prepared for side effects when using @option{-C}; it | |
525 | causes the preprocessor to treat comments as tokens in their own right. | |
526 | For example, comments appearing at the start of what would be a | |
527 | directive line have the effect of turning that line into an ordinary | |
528 | source line, since the first token on the line is no longer a @samp{#}. | |
529 | ||
477cdac7 JT |
530 | @item -CC |
531 | Do not discard comments, including during macro expansion. This is | |
532 | like @option{-C}, except that comments contained within macros are | |
533 | also passed through to the output file where the macro is expanded. | |
534 | ||
535 | In addition to the side-effects of the @option{-C} option, the | |
536 | @option{-CC} option causes all C++-style comments inside a macro | |
537 | to be converted to C-style comments. This is to prevent later use | |
538 | of that macro from inadvertently commenting out the remainer of | |
539 | the source line. | |
540 | ||
541 | The @option{-CC} option is generally used to support lint comments. | |
542 | ||
40adaa27 NB |
543 | @item -gcc |
544 | @opindex gcc | |
545 | Define the macros @sc{__gnuc__}, @sc{__gnuc_minor__} and | |
546 | @sc{__gnuc_patchlevel__}. These are defined automatically when you use | |
547 | @command{gcc -E}; you can turn them off in that case with | |
548 | @option{-no-gcc}. | |
549 | ||
550 | @item -traditional | |
551 | @opindex traditional | |
552 | Try to imitate the behavior of old-fashioned C, as opposed to ISO | |
553 | C@. | |
554 | @ifset cppmanual | |
555 | @xref{Traditional Mode}. | |
556 | @end ifset | |
557 | ||
558 | @item -trigraphs | |
559 | @opindex trigraphs | |
560 | Process trigraph sequences. | |
561 | @ifset cppmanual | |
562 | @xref{Initial processing}. | |
563 | @end ifset | |
564 | @ifclear cppmanual | |
565 | These are three-character sequences, all starting with @samp{??}, that | |
566 | are defined by ISO C to stand for single characters. For example, | |
567 | @samp{??/} stands for @samp{\}, so @samp{'??/n'} is a character | |
568 | constant for a newline. By default, GCC ignores trigraphs, but in | |
569 | standard-conforming modes it converts them. See the @option{-std} and | |
570 | @option{-ansi} options. | |
571 | ||
572 | The nine trigraphs and their replacements are | |
573 | ||
574 | @example | |
575 | Trigraph: ??( ??) ??< ??> ??= ??/ ??' ??! ??- | |
576 | Replacement: [ ] @{ @} # \ ^ | ~ | |
577 | @end example | |
578 | @end ifclear | |
579 | ||
580 | @item -remap | |
581 | @opindex remap | |
582 | Enable special code to work around file systems which only permit very | |
583 | short file names, such as MS-DOS@. | |
584 | ||
585 | @item -$ | |
586 | @opindex $ | |
587 | Forbid the use of @samp{$} in identifiers. The C standard allows | |
588 | implementations to define extra characters that can appear in | |
589 | identifiers. By default GNU CPP permits @samp{$}, a common extension. | |
590 | ||
591 | @item -h | |
592 | @itemx --help | |
593 | @itemx --target-help | |
594 | @opindex h | |
595 | @opindex help | |
596 | @opindex target-help | |
597 | Print text describing all the command line options instead of | |
598 | preprocessing anything. | |
599 | ||
600 | @item -v | |
601 | @opindex v | |
602 | Verbose mode. Print out GNU CPP's version number at the beginning of | |
603 | execution, and report the final form of the include path. | |
604 | ||
605 | @item -H | |
606 | @opindex H | |
607 | Print the name of each header file used, in addition to other normal | |
608 | activities. Each name is indented to show how deep in the | |
609 | @samp{#include} stack it is. | |
610 | ||
611 | @item -version | |
612 | @itemx --version | |
613 | @opindex version | |
614 | Print out GNU CPP's version number. With one dash, proceed to | |
615 | preprocess as normal. With two dashes, exit immediately. | |
616 | @end table |