[8833] | 1 | .\" Copyright (c) 1991, 1992, 1993 Free Software Foundation \-*-Text-*- |
---|
| 2 | .\" See section COPYING for conditions for redistribution |
---|
| 3 | .TH cpp 1 "30apr1993" "GNU Tools" "GNU Tools" |
---|
| 4 | .SH NAME |
---|
| 5 | cccp, cpp \- The GNU C-Compatible Compiler Preprocessor. |
---|
| 6 | .SH SYNOPSIS |
---|
| 7 | .hy 0 |
---|
| 8 | .na |
---|
| 9 | .TP |
---|
| 10 | .B cccp |
---|
| 11 | .RB "[\|" \-$ "\|]" |
---|
| 12 | .RB "[\|" \-A \c |
---|
| 13 | .I predicate\c |
---|
| 14 | .RB [ (\c |
---|
| 15 | .I value\c |
---|
| 16 | .BR ) ]\|] |
---|
| 17 | .RB "[\|" \-C "\|]" |
---|
| 18 | .RB "[\|" \-D \c |
---|
| 19 | .I name\c |
---|
| 20 | .RB [ =\c |
---|
| 21 | .I definition\c |
---|
| 22 | \&]\|] |
---|
| 23 | .RB "[\|" \-dD "\|]" |
---|
| 24 | .RB "[\|" \-dM "\|]" |
---|
| 25 | .RB "[\|" "\-I\ "\c |
---|
| 26 | .I directory\c |
---|
| 27 | \&\|] |
---|
| 28 | .RB "[\|" \-H "\|]" |
---|
| 29 | .RB "[\|" \-I\- "\|]" |
---|
| 30 | .RB "[\|" "\-imacros\ "\c |
---|
| 31 | .I file\c |
---|
| 32 | \&\|] |
---|
| 33 | .RB "[\|" "\-include\ "\c |
---|
| 34 | .I file\c |
---|
| 35 | \&\|] |
---|
| 36 | .RB "[\|" "\-idirafter\ "\c |
---|
| 37 | .I dir\c |
---|
| 38 | \&\|] |
---|
| 39 | .RB "[\|" "\-iprefix\ "\c |
---|
| 40 | .I prefix\c |
---|
| 41 | \&\|] |
---|
| 42 | .RB "[\|" "\-iwithprefix\ "\c |
---|
| 43 | .I dir\c |
---|
| 44 | \&\|] |
---|
| 45 | .RB "[\|" \-lang\-c "\|]" |
---|
| 46 | .RB "[\|" \-lang\-c++ "\|]" |
---|
| 47 | .RB "[\|" \-lang\-objc "\|]" |
---|
| 48 | .RB "[\|" \-lang\-objc++ "\|]" |
---|
| 49 | .RB "[\|" \-lint "\|]" |
---|
| 50 | .RB "[\|" \-M\ [ \-MG "\|]]" |
---|
| 51 | .RB "[\|" \-MM\ [ \-MG "\|]]" |
---|
| 52 | .RB "[\|" \-MD\ \c |
---|
| 53 | .I file\ \c |
---|
| 54 | \&\|] |
---|
| 55 | .RB "[\|" \-MMD\ \c |
---|
| 56 | .I file\ \c |
---|
| 57 | \&\|] |
---|
| 58 | .RB "[\|" \-nostdinc "\|]" |
---|
| 59 | .RB "[\|" \-nostdinc++ "\|]" |
---|
| 60 | .RB "[\|" \-P "\|]" |
---|
| 61 | .RB "[\|" \-pedantic "\|]" |
---|
| 62 | .RB "[\|" \-pedantic\-errors "\|]" |
---|
| 63 | .RB "[\|" \-traditional "\|]" |
---|
| 64 | .RB "[\|" \-trigraphs "\|]" |
---|
| 65 | .RB "[\|" \-U \c |
---|
| 66 | .I name\c |
---|
| 67 | \&\|] |
---|
| 68 | .RB "[\|" \-undef "\|]" |
---|
| 69 | .RB "[\|" \-Wtrigraphs "\|]" |
---|
| 70 | .RB "[\|" \-Wcomment "\|]" |
---|
| 71 | .RB "[\|" \-Wall "\|]" |
---|
| 72 | .RB "[\|" \-Wtraditional "\|]" |
---|
| 73 | .br |
---|
| 74 | .RB "[\|" \c |
---|
| 75 | .I infile\c |
---|
| 76 | .RB | \- "\|]" |
---|
| 77 | .RB "[\|" \c |
---|
| 78 | .I outfile\c |
---|
| 79 | .RB | \- "\|]" |
---|
| 80 | .ad b |
---|
| 81 | .hy 1 |
---|
| 82 | .SH DESCRIPTION |
---|
| 83 | The C preprocessor is a \c |
---|
| 84 | .I macro processor\c |
---|
| 85 | \& that is used automatically by |
---|
| 86 | the C compiler to transform your program before actual compilation. It is |
---|
| 87 | called a macro processor because it allows you to define \c |
---|
| 88 | .I macros\c |
---|
| 89 | \&, |
---|
| 90 | which are brief abbreviations for longer constructs. |
---|
| 91 | |
---|
| 92 | The C preprocessor provides four separate facilities that you can use as |
---|
| 93 | you see fit: |
---|
| 94 | .TP |
---|
| 95 | \(bu |
---|
| 96 | Inclusion of header files. These are files of declarations that can be |
---|
| 97 | substituted into your program. |
---|
| 98 | .TP |
---|
| 99 | \(bu |
---|
| 100 | Macro expansion. You can define \c |
---|
| 101 | .I macros\c |
---|
| 102 | \&, which are abbreviations |
---|
| 103 | for arbitrary fragments of C code, and then the C preprocessor will |
---|
| 104 | replace the macros with their definitions throughout the program. |
---|
| 105 | .TP |
---|
| 106 | \(bu |
---|
| 107 | Conditional compilation. Using special preprocessing directives, you |
---|
| 108 | can include or exclude parts of the program according to various |
---|
| 109 | conditions. |
---|
| 110 | .TP |
---|
| 111 | \(bu |
---|
| 112 | Line control. If you use a program to combine or rearrange source files into |
---|
| 113 | an intermediate file which is then compiled, you can use line control |
---|
| 114 | to inform the compiler of where each source line originally came from. |
---|
| 115 | .PP |
---|
| 116 | C preprocessors vary in some details. For a full explanation of the |
---|
| 117 | GNU C preprocessor, see the |
---|
| 118 | .B info |
---|
| 119 | file `\|\c |
---|
| 120 | .B cpp.info\c |
---|
| 121 | \&\|', or the manual |
---|
| 122 | .I The C Preprocessor\c |
---|
| 123 | \&. Both of these are built from the same documentation source file, `\|\c |
---|
| 124 | .B cpp.texinfo\c |
---|
| 125 | \&\|'. The GNU C |
---|
| 126 | preprocessor provides a superset of the features of ANSI Standard C. |
---|
| 127 | |
---|
| 128 | ANSI Standard C requires the rejection of many harmless constructs commonly |
---|
| 129 | used by today's C programs. Such incompatibility would be inconvenient for |
---|
| 130 | users, so the GNU C preprocessor is configured to accept these constructs |
---|
| 131 | by default. Strictly speaking, to get ANSI Standard C, you must use the |
---|
| 132 | options `\|\c |
---|
| 133 | .B \-trigraphs\c |
---|
| 134 | \&\|', `\|\c |
---|
| 135 | .B \-undef\c |
---|
| 136 | \&\|' and `\|\c |
---|
| 137 | .B \-pedantic\c |
---|
| 138 | \&\|', but in |
---|
| 139 | practice the consequences of having strict ANSI Standard C make it |
---|
| 140 | undesirable to do this. |
---|
| 141 | |
---|
| 142 | Most often when you use the C preprocessor you will not have to invoke it |
---|
| 143 | explicitly: the C compiler will do so automatically. However, the |
---|
| 144 | preprocessor is sometimes useful individually. |
---|
| 145 | |
---|
| 146 | When you call the preprocessor individually, either name |
---|
| 147 | (\c |
---|
| 148 | .B cpp\c |
---|
| 149 | \& or \c |
---|
| 150 | .B cccp\c |
---|
| 151 | \&) will do\(em\&they are completely synonymous. |
---|
| 152 | |
---|
| 153 | The C preprocessor expects two file names as arguments, \c |
---|
| 154 | .I infile\c |
---|
| 155 | \& and |
---|
| 156 | \c |
---|
| 157 | .I outfile\c |
---|
| 158 | \&. The preprocessor reads \c |
---|
| 159 | .I infile\c |
---|
| 160 | \& together with any other |
---|
| 161 | files it specifies with `\|\c |
---|
| 162 | .B #include\c |
---|
| 163 | \&\|'. All the output generated by the |
---|
| 164 | combined input files is written in \c |
---|
| 165 | .I outfile\c |
---|
| 166 | \&. |
---|
| 167 | |
---|
| 168 | Either \c |
---|
| 169 | .I infile\c |
---|
| 170 | \& or \c |
---|
| 171 | .I outfile\c |
---|
| 172 | \& may be `\|\c |
---|
| 173 | .B \-\c |
---|
| 174 | \&\|', which as \c |
---|
| 175 | .I infile\c |
---|
| 176 | \& |
---|
| 177 | means to read from standard input and as \c |
---|
| 178 | .I outfile\c |
---|
| 179 | \& means to write to |
---|
| 180 | standard output. Also, if \c |
---|
| 181 | .I outfile\c |
---|
| 182 | \& or both file names are omitted, |
---|
| 183 | the standard output and standard input are used for the omitted file names. |
---|
| 184 | .SH OPTIONS |
---|
| 185 | Here is a table of command options accepted by the C preprocessor. |
---|
| 186 | These options can also be given when compiling a C program; they are |
---|
| 187 | passed along automatically to the preprocessor when it is invoked by |
---|
| 188 | the compiler. |
---|
| 189 | .TP |
---|
| 190 | .B \-P |
---|
| 191 | Inhibit generation of `\|\c |
---|
| 192 | .B #\c |
---|
| 193 | \&\|'-lines with line-number information in |
---|
| 194 | the output from the preprocessor. This might be |
---|
| 195 | useful when running the preprocessor on something that is not C code |
---|
| 196 | and will be sent to a program which might be confused by the |
---|
| 197 | `\|\c |
---|
| 198 | .B #\c |
---|
| 199 | \&\|'-lines. |
---|
| 200 | .TP |
---|
| 201 | .B \-C |
---|
| 202 | Do not discard comments: pass them through to the output file. |
---|
| 203 | Comments appearing in arguments of a macro call will be copied to the |
---|
| 204 | output before the expansion of the macro call. |
---|
| 205 | .TP |
---|
| 206 | .B \-traditional |
---|
| 207 | Try to imitate the behavior of old-fashioned C, as opposed to ANSI C. |
---|
| 208 | .TP |
---|
| 209 | .B \-trigraphs |
---|
| 210 | Process ANSI standard trigraph sequences. These are three-character |
---|
| 211 | sequences, all starting with `\|\c |
---|
| 212 | .B ??\c |
---|
| 213 | \&\|', that are defined by ANSI C to |
---|
| 214 | stand for single characters. For example, `\|\c |
---|
| 215 | .B ??/\c |
---|
| 216 | \&\|' stands for |
---|
| 217 | `\|\c |
---|
| 218 | .BR "\e" "\|'," |
---|
| 219 | so `\|\c |
---|
| 220 | .B '??/n'\c |
---|
| 221 | \&\|' is a character constant for a newline. |
---|
| 222 | Strictly speaking, the GNU C preprocessor does not support all |
---|
| 223 | programs in ANSI Standard C unless `\|\c |
---|
| 224 | .B \-trigraphs\c |
---|
| 225 | \&\|' is used, but if |
---|
| 226 | you ever notice the difference it will be with relief. |
---|
| 227 | |
---|
| 228 | You don't want to know any more about trigraphs. |
---|
| 229 | .TP |
---|
| 230 | .B \-pedantic |
---|
| 231 | Issue warnings required by the ANSI C standard in certain cases such |
---|
| 232 | as when text other than a comment follows `\|\c |
---|
| 233 | .B #else\c |
---|
| 234 | \&\|' or `\|\c |
---|
| 235 | .B #endif\c |
---|
| 236 | \&\|'. |
---|
| 237 | .TP |
---|
| 238 | .B \-pedantic\-errors |
---|
| 239 | Like `\|\c |
---|
| 240 | .B \-pedantic\c |
---|
| 241 | \&\|', except that errors are produced rather than |
---|
| 242 | warnings. |
---|
| 243 | .TP |
---|
| 244 | .B \-Wtrigraphs |
---|
| 245 | Warn if any trigraphs are encountered (assuming they are enabled). |
---|
| 246 | .TP |
---|
| 247 | .B \-Wcomment |
---|
| 248 | .TP |
---|
| 249 | .B \-Wcomments |
---|
| 250 | Warn whenever a comment-start sequence `\|\c |
---|
| 251 | .B /*\c |
---|
| 252 | \&\|' appears in a comment. |
---|
| 253 | (Both forms have the same effect). |
---|
| 254 | .TP |
---|
| 255 | .B \-Wall |
---|
| 256 | Requests both `\|\c |
---|
| 257 | .B \-Wtrigraphs\c |
---|
| 258 | \&\|' and `\|\c |
---|
| 259 | .B \-Wcomment\c |
---|
| 260 | \&\|' (but not |
---|
| 261 | `\|\c |
---|
| 262 | .B \-Wtraditional\c |
---|
| 263 | \&\|'). |
---|
| 264 | .TP |
---|
| 265 | .B \-Wtraditional |
---|
| 266 | Warn about certain constructs that behave differently in traditional and |
---|
| 267 | ANSI C. |
---|
| 268 | .TP |
---|
| 269 | .BI "\-I " directory\c |
---|
| 270 | \& |
---|
| 271 | Add the directory \c |
---|
| 272 | .I directory\c |
---|
| 273 | \& to the end of the list of |
---|
| 274 | directories to be searched for header files. |
---|
| 275 | This can be used to override a system header file, substituting your |
---|
| 276 | own version, since these directories are searched before the system |
---|
| 277 | header file directories. If you use more than one `\|\c |
---|
| 278 | .B \-I\c |
---|
| 279 | \&\|' option, |
---|
| 280 | the directories are scanned in left-to-right order; the standard |
---|
| 281 | system directories come after. |
---|
| 282 | .TP |
---|
| 283 | .B \-I\- |
---|
| 284 | Any directories specified with `\|\c |
---|
| 285 | .B \-I\c |
---|
| 286 | \&\|' options before the `\|\c |
---|
| 287 | .B \-I\-\c |
---|
| 288 | \&\|' |
---|
| 289 | option are searched only for the case of `\|\c |
---|
| 290 | .B #include "\c |
---|
| 291 | .I file\c |
---|
| 292 | \&"\c |
---|
| 293 | \&\|'; |
---|
| 294 | they are not searched for `\|\c |
---|
| 295 | .B #include <\c |
---|
| 296 | .I file\c |
---|
| 297 | \&>\c |
---|
| 298 | \&\|'. |
---|
| 299 | |
---|
| 300 | If additional directories are specified with `\|\c |
---|
| 301 | .B \-I\c |
---|
| 302 | \&\|' options after |
---|
| 303 | the `\|\c |
---|
| 304 | .B \-I\-\c |
---|
| 305 | \&\|', these directories are searched for all `\|\c |
---|
| 306 | .B #include\c |
---|
| 307 | \&\|' |
---|
| 308 | directives. |
---|
| 309 | |
---|
| 310 | In addition, the `\|\c |
---|
| 311 | .B \-I\-\c |
---|
| 312 | \&\|' option inhibits the use of the current |
---|
| 313 | directory as the first search directory for `\|\c |
---|
| 314 | .B #include "\c |
---|
| 315 | .I file\c |
---|
| 316 | \&"\c |
---|
| 317 | \&\|'. |
---|
| 318 | Therefore, the current directory is searched only if it is requested |
---|
| 319 | explicitly with `\|\c |
---|
| 320 | .B \-I.\c |
---|
| 321 | \&\|'. Specifying both `\|\c |
---|
| 322 | .B \-I\-\c |
---|
| 323 | \&\|' and `\|\c |
---|
| 324 | .B \-I.\c |
---|
| 325 | \&\|' |
---|
| 326 | allows you to control precisely which directories are searched before |
---|
| 327 | the current one and which are searched after. |
---|
| 328 | .TP |
---|
| 329 | .B \-nostdinc |
---|
| 330 | Do not search the standard system directories for header files. |
---|
| 331 | Only the directories you have specified with `\|\c |
---|
| 332 | .B \-I\c |
---|
| 333 | \&\|' options |
---|
| 334 | (and the current directory, if appropriate) are searched. |
---|
| 335 | .TP |
---|
| 336 | .B \-nostdinc++ |
---|
| 337 | Do not search for header files in the C++ specific standard |
---|
| 338 | directories, but do still search the other standard directories. |
---|
| 339 | (This option is used when building libg++.) |
---|
| 340 | .TP |
---|
| 341 | .BI "\-D " "name"\c |
---|
| 342 | \& |
---|
| 343 | Predefine \c |
---|
| 344 | .I name\c |
---|
| 345 | \& as a macro, with definition `\|\c |
---|
| 346 | .B 1\c |
---|
| 347 | \&\|'. |
---|
| 348 | .TP |
---|
| 349 | .BI "\-D " "name" = definition |
---|
| 350 | \& |
---|
| 351 | Predefine \c |
---|
| 352 | .I name\c |
---|
| 353 | \& as a macro, with definition \c |
---|
| 354 | .I definition\c |
---|
| 355 | \&. |
---|
| 356 | There are no restrictions on the contents of \c |
---|
| 357 | .I definition\c |
---|
| 358 | \&, but if |
---|
| 359 | you are invoking the preprocessor from a shell or shell-like program |
---|
| 360 | you may need to use the shell's quoting syntax to protect characters |
---|
| 361 | such as spaces that have a meaning in the shell syntax. If you use more than |
---|
| 362 | one `\|\c |
---|
| 363 | .B \-D\c |
---|
| 364 | \&\|' for the same |
---|
| 365 | .I name\c |
---|
| 366 | \&, the rightmost definition takes effect. |
---|
| 367 | .TP |
---|
| 368 | .BI "\-U " "name"\c |
---|
| 369 | \& |
---|
| 370 | Do not predefine \c |
---|
| 371 | .I name\c |
---|
| 372 | \&. If both `\|\c |
---|
| 373 | .B \-U\c |
---|
| 374 | \&\|' and `\|\c |
---|
| 375 | .B \-D\c |
---|
| 376 | \&\|' are |
---|
| 377 | specified for one name, the `\|\c |
---|
| 378 | .B \-U\c |
---|
| 379 | \&\|' beats the `\|\c |
---|
| 380 | .B \-D\c |
---|
| 381 | \&\|' and the name |
---|
| 382 | is not predefined. |
---|
| 383 | .TP |
---|
| 384 | .B \-undef |
---|
| 385 | Do not predefine any nonstandard macros. |
---|
| 386 | .TP |
---|
| 387 | .BI "\-A " "name(" value ) |
---|
| 388 | Assert (in the same way as the \c |
---|
| 389 | .B #assert\c |
---|
| 390 | \& directive) |
---|
| 391 | the predicate \c |
---|
| 392 | .I name\c |
---|
| 393 | \& with tokenlist \c |
---|
| 394 | .I value\c |
---|
| 395 | \&. Remember to escape or quote the parentheses on |
---|
| 396 | shell command lines. |
---|
| 397 | |
---|
| 398 | You can use `\|\c |
---|
| 399 | .B \-A-\c |
---|
| 400 | \&\|' to disable all predefined assertions; it also |
---|
| 401 | undefines all predefined macros. |
---|
| 402 | .TP |
---|
| 403 | .B \-dM |
---|
| 404 | Instead of outputting the result of preprocessing, output a list of |
---|
| 405 | `\|\c |
---|
| 406 | .B #define\c |
---|
| 407 | \&\|' directives for all the macros defined during the |
---|
| 408 | execution of the preprocessor, including predefined macros. This gives |
---|
| 409 | you a way of finding out what is predefined in your version of the |
---|
| 410 | preprocessor; assuming you have no file `\|\c |
---|
| 411 | .B foo.h\c |
---|
| 412 | \&\|', the command |
---|
| 413 | .sp |
---|
| 414 | .br |
---|
| 415 | touch\ foo.h;\ cpp\ \-dM\ foo.h |
---|
| 416 | .br |
---|
| 417 | .sp |
---|
| 418 | will show the values of any predefined macros. |
---|
| 419 | .TP |
---|
| 420 | .B \-dD |
---|
| 421 | Like `\|\c |
---|
| 422 | .B \-dM\c |
---|
| 423 | \&\|' except in two respects: it does \c |
---|
| 424 | .I not\c |
---|
| 425 | \& include the |
---|
| 426 | predefined macros, and it outputs \c |
---|
| 427 | .I both\c |
---|
| 428 | \& the `\|\c |
---|
| 429 | .B #define\c |
---|
| 430 | \&\|' |
---|
| 431 | directives and the result of preprocessing. Both kinds of output go to |
---|
| 432 | the standard output file. |
---|
| 433 | .PP |
---|
| 434 | .TP |
---|
| 435 | .BR \-M\ [ \-MG ] |
---|
| 436 | Instead of outputting the result of preprocessing, output a rule |
---|
| 437 | suitable for \c |
---|
| 438 | .B make\c |
---|
| 439 | \& describing the dependencies of the main |
---|
| 440 | source file. The preprocessor outputs one \c |
---|
| 441 | .B make\c |
---|
| 442 | \& rule containing |
---|
| 443 | the object file name for that source file, a colon, and the names of |
---|
| 444 | all the included files. If there are many included files then the |
---|
| 445 | rule is split into several lines using `\|\c |
---|
| 446 | .B \\\\\c |
---|
| 447 | \&\|'-newline. |
---|
| 448 | |
---|
| 449 | `\|\c |
---|
| 450 | .B \-MG\c |
---|
| 451 | \&\|' says to treat missing header files as generated files and assume \c |
---|
| 452 | they live in the same directory as the source file. It must be specified \c |
---|
| 453 | in addition to `\|\c |
---|
| 454 | .B \-M\c |
---|
| 455 | \&\|'. |
---|
| 456 | |
---|
| 457 | This feature is used in automatic updating of makefiles. |
---|
| 458 | .TP |
---|
| 459 | .BR \-MM\ [ \-MG ] |
---|
| 460 | Like `\|\c |
---|
| 461 | .B \-M\c |
---|
| 462 | \&\|' but mention only the files included with `\|\c |
---|
| 463 | .B #include |
---|
| 464 | "\c |
---|
| 465 | .I file\c |
---|
| 466 | \&"\c |
---|
| 467 | \&\|'. System header files included with `\|\c |
---|
| 468 | .B #include |
---|
| 469 | <\c |
---|
| 470 | .I file\c |
---|
| 471 | \&>\c |
---|
| 472 | \&\|' are omitted. |
---|
| 473 | .TP |
---|
| 474 | .BI \-MD\ file |
---|
| 475 | Like `\|\c |
---|
| 476 | .B \-M\c |
---|
| 477 | \&\|' but the dependency information is written to `\|\c |
---|
| 478 | .I file\c |
---|
| 479 | \&\|'. This is in addition to compiling the file as |
---|
| 480 | specified\(em\&`\|\c |
---|
| 481 | .B \-MD\c |
---|
| 482 | \&\|' does not inhibit ordinary compilation the way |
---|
| 483 | `\|\c |
---|
| 484 | .B \-M\c |
---|
| 485 | \&\|' does. |
---|
| 486 | |
---|
| 487 | When invoking gcc, do not specify the `\|\c |
---|
| 488 | .I file\c |
---|
| 489 | \&\|' argument. Gcc will create file names made by replacing `\|\c |
---|
| 490 | .B .c\c |
---|
| 491 | \&\|' with `\|\c |
---|
| 492 | .B .d\c |
---|
| 493 | \&\|' at the end of the input file names. |
---|
| 494 | |
---|
| 495 | In Mach, you can use the utility \c |
---|
| 496 | .B md\c |
---|
| 497 | \& to merge multiple files |
---|
| 498 | into a single dependency file suitable for using with the `\|\c |
---|
| 499 | .B make\c |
---|
| 500 | \&\|' |
---|
| 501 | command. |
---|
| 502 | .TP |
---|
| 503 | .BI \-MMD\ file |
---|
| 504 | Like `\|\c |
---|
| 505 | .B \-MD\c |
---|
| 506 | \&\|' except mention only user header files, not system |
---|
| 507 | header files. |
---|
| 508 | .TP |
---|
| 509 | .B \-H |
---|
| 510 | Print the name of each header file used, in addition to other normal |
---|
| 511 | activities. |
---|
| 512 | .TP |
---|
| 513 | .BI "\-imacros " "file"\c |
---|
| 514 | \& |
---|
| 515 | Process \c |
---|
| 516 | .I file\c |
---|
| 517 | \& as input, discarding the resulting output, before |
---|
| 518 | processing the regular input file. Because the output generated from |
---|
| 519 | \c |
---|
| 520 | .I file\c |
---|
| 521 | \& is discarded, the only effect of `\|\c |
---|
| 522 | .B \-imacros \c |
---|
| 523 | .I file\c |
---|
| 524 | \&\c |
---|
| 525 | \&\|' is to |
---|
| 526 | make the macros defined in \c |
---|
| 527 | .I file\c |
---|
| 528 | \& available for use in the main |
---|
| 529 | input. The preprocessor evaluates any `\|\c |
---|
| 530 | .B \-D\c |
---|
| 531 | \&\|' and `\|\c |
---|
| 532 | .B \-U\c |
---|
| 533 | \&\|' options |
---|
| 534 | on the command line before processing `\|\c |
---|
| 535 | .B \-imacros \c |
---|
| 536 | .I file\c |
---|
| 537 | \&\|' \c |
---|
| 538 | \&. |
---|
| 539 | .TP |
---|
| 540 | .BI "\-include " "file" |
---|
| 541 | Process |
---|
| 542 | .I file |
---|
| 543 | as input, and include all the resulting output, |
---|
| 544 | before processing the regular input file. |
---|
| 545 | .TP |
---|
| 546 | .BI "-idirafter " "dir"\c |
---|
| 547 | \& |
---|
| 548 | Add the directory \c |
---|
| 549 | .I dir\c |
---|
| 550 | \& to the second include path. The directories |
---|
| 551 | on the second include path are searched when a header file is not found |
---|
| 552 | in any of the directories in the main include path (the one that |
---|
| 553 | `\|\c |
---|
| 554 | .B \-I\c |
---|
| 555 | \&\|' adds to). |
---|
| 556 | .TP |
---|
| 557 | .BI "-iprefix " "prefix"\c |
---|
| 558 | \& |
---|
| 559 | Specify \c |
---|
| 560 | .I prefix\c |
---|
| 561 | \& as the prefix for subsequent `\|\c |
---|
| 562 | .B \-iwithprefix\c |
---|
| 563 | \&\|' |
---|
| 564 | options. |
---|
| 565 | .TP |
---|
| 566 | .BI "-iwithprefix " "dir"\c |
---|
| 567 | \& |
---|
| 568 | Add a directory to the second include path. The directory's name is |
---|
| 569 | made by concatenating \c |
---|
| 570 | .I prefix\c |
---|
| 571 | \& and \c |
---|
| 572 | .I dir\c |
---|
| 573 | \&, where \c |
---|
| 574 | .I prefix\c |
---|
| 575 | \& |
---|
| 576 | was specified previously with `\|\c |
---|
| 577 | .B \-iprefix\c |
---|
| 578 | \&\|'. |
---|
| 579 | .TP |
---|
| 580 | .B \-lang-c |
---|
| 581 | .TP |
---|
| 582 | .B \-lang-c++ |
---|
| 583 | .TP |
---|
| 584 | .B \-lang-objc |
---|
| 585 | .TP |
---|
| 586 | .B \-lang-objc++ |
---|
| 587 | Specify the source language. `\|\c |
---|
| 588 | .B \-lang-c++\c |
---|
| 589 | \&\|' makes the preprocessor |
---|
| 590 | handle C++ comment syntax, and includes extra default include |
---|
| 591 | directories for C++, and `\|\c |
---|
| 592 | .B \-lang-objc\c |
---|
| 593 | \&\|' enables the Objective C |
---|
| 594 | `\|\c |
---|
| 595 | .B #import\c |
---|
| 596 | \&\|' directive. `\|\c |
---|
| 597 | .B \-lang-c\c |
---|
| 598 | \&\|' explicitly turns off both of |
---|
| 599 | these extensions, and `\|\c |
---|
| 600 | .B \-lang-objc++\c |
---|
| 601 | \&\|' enables both. |
---|
| 602 | |
---|
| 603 | These options are generated by the compiler driver \c |
---|
| 604 | .B gcc\c |
---|
| 605 | \&, but not |
---|
| 606 | passed from the `\|\c |
---|
| 607 | .B gcc\c |
---|
| 608 | \&\|' command line. |
---|
| 609 | .TP |
---|
| 610 | .B \-lint |
---|
| 611 | Look for commands to the program checker \c |
---|
| 612 | .B lint\c |
---|
| 613 | \& embedded in |
---|
| 614 | comments, and emit them preceded by `\|\c |
---|
| 615 | .B #pragma lint\c |
---|
| 616 | \&\|'. For example, |
---|
| 617 | the comment `\|\c |
---|
| 618 | .B /* NOTREACHED */\c |
---|
| 619 | \&\|' becomes `\|\c |
---|
| 620 | .B #pragma lint |
---|
| 621 | NOTREACHED\c |
---|
| 622 | \&\|'. |
---|
| 623 | |
---|
| 624 | This option is available only when you call \c |
---|
| 625 | .B cpp\c |
---|
| 626 | \& directly; |
---|
| 627 | \c |
---|
| 628 | .B gcc\c |
---|
| 629 | \& will not pass it from its command line. |
---|
| 630 | .TP |
---|
| 631 | .B \-$ |
---|
| 632 | Forbid the use of `\|\c |
---|
| 633 | .B $\c |
---|
[11287] | 634 | \&\|' in identifiers. This was formerly required for strict conformance |
---|
| 635 | to the C Standard before the standard was corrected. \c |
---|
| 636 | |
---|
| 637 | This option is available only when you call \c |
---|
| 638 | .B cpp\c |
---|
| 639 | \& directly; |
---|
[8833] | 640 | .B gcc\c |
---|
[11287] | 641 | \& will not pass it from its command line. |
---|
[8833] | 642 | .SH "SEE ALSO" |
---|
| 643 | .RB "`\|" Cpp "\|'" |
---|
| 644 | entry in |
---|
| 645 | .B info\c |
---|
| 646 | \&; |
---|
| 647 | .I The C Preprocessor\c |
---|
| 648 | , Richard M. Stallman. |
---|
| 649 | .br |
---|
| 650 | .BR gcc "(" 1 ");" |
---|
| 651 | .RB "`\|" Gcc "\|'" |
---|
| 652 | entry in |
---|
| 653 | .B info\c |
---|
| 654 | \&; |
---|
| 655 | .I |
---|
| 656 | Using and Porting GNU CC (for version 2.0)\c |
---|
| 657 | , Richard M. Stallman. |
---|
| 658 | .SH COPYING |
---|
| 659 | Copyright (c) 1991, 1992, 1993 Free Software Foundation, Inc. |
---|
| 660 | .PP |
---|
| 661 | Permission is granted to make and distribute verbatim copies of |
---|
| 662 | this manual provided the copyright notice and this permission notice |
---|
| 663 | are preserved on all copies. |
---|
| 664 | .PP |
---|
| 665 | Permission is granted to copy and distribute modified versions of this |
---|
| 666 | manual under the conditions for verbatim copying, provided that the |
---|
| 667 | entire resulting derived work is distributed under the terms of a |
---|
| 668 | permission notice identical to this one. |
---|
| 669 | .PP |
---|
| 670 | Permission is granted to copy and distribute translations of this |
---|
| 671 | manual into another language, under the above conditions for modified |
---|
| 672 | versions, except that this permission notice may be included in |
---|
| 673 | translations approved by the Free Software Foundation instead of in |
---|
| 674 | the original English. |
---|