cpp.texinfo 71 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919
  1. \input texinfo
  2. @setfilename cpp
  3. @settitle The C Preprocessor
  4. @ifinfo
  5. This file documents the GNU C Preprocessor.
  6. Copyright (C) 1987 Richard M. Stallman.
  7. Permission is granted to make and distribute verbatim copies of
  8. this manual provided the copyright notice and this permission notice
  9. are preserved on all copies.
  10. @ignore
  11. Permission is granted to process this file through Tex and print the
  12. results, provided the printed document carries copying permission
  13. notice identical to this one except for the removal of this paragraph
  14. (this paragraph not being relevant to the printed manual).
  15. @end ignore
  16. Permission is granted to copy and distribute modified versions of this
  17. manual under the conditions for verbatim copying, provided also that
  18. the entire resulting derived work is distributed under the terms of a
  19. permission notice identical to this one.
  20. Permission is granted to copy and distribute translations of this manual
  21. into another language, under the above conditions for modified versions.
  22. @end ifinfo
  23. @titlepage
  24. @sp 6
  25. @center @titlefont{The C Preprocessor}
  26. @sp 4
  27. @center First Edition
  28. @sp 1
  29. @center January 1987
  30. @sp 5
  31. @center Richard M. Stallman
  32. @page
  33. @vskip 0pt plus 1filll
  34. Copyright @copyright{} 1987 Richard M. Stallman.
  35. Permission is granted to make and distribute verbatim copies of
  36. this manual provided the copyright notice and this permission notice
  37. are preserved on all copies.
  38. Permission is granted to copy and distribute modified versions of this
  39. manual under the conditions for verbatim copying, provided also that
  40. the entire resulting derived work is distributed under the terms of a
  41. permission notice identical to this one.
  42. Permission is granted to copy and distribute translations of this manual
  43. into another language, under the above conditions for modified versions.
  44. @end titlepage
  45. @page
  46. @node Top, Global Actions,, (DIR)
  47. @chapter The C Preprocessor
  48. The C preprocessor is a @dfn{macro processor} that is used automatically by
  49. the C compiler to transform your program before actual compilation. It is
  50. called a macro processor because it allows you to define @dfn{macros},
  51. which are brief abbreviations for longer constructs.
  52. The C preprocessor provides four separate facilities that you can use as
  53. you see fit:
  54. @itemize @bullet
  55. @item
  56. Inclusion of header files. These are files of declarations that can be
  57. substituted into your program.
  58. @item
  59. Macro expansion. You can define @dfn{macros}, which are abbreviations
  60. for arbitrary fragments of C code, and then the C preprocessor will
  61. replace the macros with their definitions throughout the program.
  62. @item
  63. Conditional compilation. Using special preprocessor commands, you
  64. can include or exclude parts of the program according to various
  65. conditions.
  66. @item
  67. Line control. If you use a program to combine or rearrange source files into
  68. an intermediate file which is then compiled, you can use line control
  69. to inform the compiler of where each source line originally came from.
  70. @end itemize
  71. C preprocessors vary in some details. This manual discusses the GNU C
  72. preprocessor, the C Compatible Compiler Preprocessor. The GNU C
  73. preprocessor provides a superset of the features of ANSI Standard C.
  74. ANSI Standard C requires the rejection of many harmless constructs commonly
  75. used by today's C programs. Such incompatibility would be inconvenient for
  76. users, so the GNU C preprocessor is configured to accept these constructs
  77. by default. Strictly speaking, to get ANSI Standard C, you must use the
  78. switches @samp{-T}, @samp{-undef} and @samp{-pedantic}, but in practice the
  79. consequences of having strict ANSI Standard C make it undesirable to do
  80. this. @xref{Invocation}.
  81. @menu
  82. * Global Actions:: Actions made uniformly on all input files.
  83. * Commands:: General syntax of preprocessor commands.
  84. * Header Files:: How and why to use header files.
  85. * Macros:: How and why to use macros.
  86. * Conditionals:: How and why to use conditionals.
  87. * Combining Sources:: Use of line control when you combine source files.
  88. * Other Commands:: Miscellaneous preprocessor commands.
  89. * Output:: Format of output from the C preprocessor.
  90. * Invocation:: How to invoke the preprocessor; command switches.
  91. * Concept Index:: Index of concepts and terms.
  92. * Index:: Index of commands, predefined macros and switches.
  93. @end menu
  94. @node Global Actions, Commands, Top, Top
  95. @section Transformations Made Globally
  96. Most C preprocessor features are inactive unless you give specific commands
  97. to request their use. (Preprocessor commands are lines starting with
  98. @samp{#}; @pxref{Commands}). But there are three transformations that the
  99. preprocessor always makes on all the input it receives, even in the absence
  100. of commands.
  101. @itemize @bullet
  102. @item
  103. All C comments are replaced with single spaces.
  104. @item
  105. Backslash-Newline sequences are deleted, no matter where. This
  106. feature allows you to break long lines for cosmetic purposes without
  107. changing their meaning.
  108. @item
  109. Predefined macro names are replaced with their expansions
  110. (@pxref{Predefined}).
  111. @end itemize
  112. The first two transformations are done @emph{before} nearly all other parsing
  113. and before preprocessor commands are recognized. Thus, for example, you
  114. can split a line cosmetically with Backslash-Newline just about anywhere.
  115. Even
  116. @example
  117. #defi\
  118. ne FO\
  119. O 10\
  120. 20
  121. @end example
  122. @noindent
  123. is equivalent into @samp{#define FOO 1020}.
  124. But there are a few exceptions to both transformations.
  125. @itemize @bullet
  126. @item
  127. C comments and predefined macro names are not recognized inside a
  128. @samp{#include} command in which the file name is delimited with
  129. @samp{<} and @samp{>}.
  130. @item
  131. C comments and predefined macro names are never recognized within a
  132. character or string constant. (Strictly speaking, this is the rule,
  133. not an exception, but it is worth noting here anyway.)
  134. @item
  135. Backslash-Newline is not discarded if preceded by an odd number of
  136. additional Backslashes. This is because the Backslashes quote each
  137. other, leaving the Newline as an ordinary Newline.
  138. @example
  139. x\\
  140. y
  141. @end example
  142. @noindent
  143. is an example of a Backslash-Newline that is preserved from deletion for
  144. this reason.
  145. @end itemize
  146. @node Commands, Header Files, Global Actions, Top
  147. @section Preprocessor Commands
  148. @cindex preprocessor commands
  149. @cindex commands
  150. Most preprocessor features are active only if you use preprocessor commands
  151. to request their use.
  152. Preprocessor commands are lines in your program that start with @samp{#}.
  153. The @samp{#} is followed by an identifier that is the @dfn{command name}.
  154. For example, @samp{#define} is the command that defines a macro.
  155. Whitespace is also allowed before and after the @samp{#}.
  156. The set of valid command names is fixed. Programs cannot define new
  157. preprocessor commands.
  158. Some command names require arguments; these make up the rest of the command
  159. line and must be separated from the command name by whitespace. For example,
  160. @samp{#define} must be followed by a macro name and the intended expansion
  161. of the macro.
  162. A preprocessor command cannot be more than one line in normal circumstances.
  163. It may be split cosmetically with Backslash-Newline, but that has no effect
  164. on its meaning. Comments containing Newlines can also divide the command into
  165. multiple lines, but the comments are changed to Spaces before the command
  166. is interpreted. The only way a significant Newline can occur in a preprocessor
  167. command is within a string constant or character constant. Note that
  168. most C compilers that might be applied to the output from the preprocessor
  169. do not accept string or character constants containing Newlines.
  170. The @samp{#} and the command name cannot come from a macro expansion. For
  171. example, if @samp{foo} is defined as a macro expanding to @samp{define},
  172. that does not make @samp{#foo} a valid preprocessor command.
  173. @node Header Files, Macros, Commands, Top
  174. @section Header Files
  175. @cindex header file
  176. A header file is a file containing C declarations and macro definitions
  177. (@pxref{Macros}) to be shared between several source files. You request
  178. the use of a header file in your program with the C preprocessor command
  179. @samp{#include}.
  180. @node Header Uses, Include Syntax, Header Files, Header Files
  181. @subsection Uses of Header Files
  182. Header files serve two kinds of purposes.
  183. @itemize @bullet
  184. @item
  185. @findex system header files
  186. System header files declare the interfaces to parts of the operating
  187. system. You include them in your program to supply the definitions
  188. you need to invoke system calls and libraries.
  189. @item
  190. Your own header files contain declarations for interfaces between the
  191. source files of your program. Each time you have a group of related
  192. declarations and macro definitions all or most of which are needed in
  193. several different source files, it is a good idea to create a header
  194. file for them.
  195. @end itemize
  196. Including a header file produces the same results in C compilation as
  197. copying the header file into each source file that needs it. But such
  198. copying would be time-consuming and error-prone. With a header file, the
  199. related declarations appear in only one place. If they need to be changed,
  200. they can be changed in one place, and programs that include the header file
  201. will automatically use the new version when next recompiled. The header
  202. file eliminates the labor of finding and changing all the copies as well as
  203. the risk that a failure to find one copy will result in inconsistencies
  204. within a program.
  205. The usual convention is to give header files names that end with @file{.h}.
  206. @node Include Syntax, Include Operation, Header Uses, Header Files
  207. @subsection The @samp{#include} Command
  208. @findex #include
  209. Both user and system header files are included using the preprocessor
  210. command @samp{#include}. It has three variants:
  211. @table @code
  212. @item #include <@var{file}>
  213. This variant is used for system header files. It searches for a file
  214. named @var{file} in a standard list of system directories.
  215. {{how can the user find out about/control this list?}}
  216. The parsing of this form of @samp{#include} is slightly special
  217. because comments are not recognized within the @samp{<@dots{}>}.
  218. Thus, in @samp{#include <x/*y>} the @samp{/*} does not start a comment
  219. and the command specifies inclusion of a system header file named
  220. @file{x/*y}. Of course, a header file with such a name is unlikely to
  221. exist on Unix, where shell wildcard features would make it hard to
  222. manipulate.
  223. @var{file} may not contain a @samp{>} character. It may, however,
  224. contain a @samp{<} character.
  225. @item #include "@var{file}"
  226. This variant is used for header files of your own program. It
  227. searches for a file named @var{file} first in the current working
  228. directory, and then in a specified list of directories for user
  229. header files, and finally in the same directories used for system header
  230. files. The current working directory is tried first because it is
  231. presumed to be the location of the files of the program being
  232. compiled. The other directories for user header files are specified
  233. with the command switch @samp{-I} (@pxref{Invocation}).
  234. @var{file} may not contain @samp{"} characters unless they are
  235. preceded by Backslashes. Note, however, that such Backslashes are
  236. @emph{not} discarded when searching for the file. None of the character
  237. escape sequences appropriate to string constants in C is processed;
  238. all Backslashes are significant. Thus, @samp{#include "x\n\"y"}
  239. specifies a filename containing two Backslashes. It is not clear why
  240. this behavior is ever useful, but the ANSI standard specifies it.
  241. @item #include @var{anything else}
  242. This variant is called a @dfn{computed #include}. Any @samp{#include}
  243. command whose argument does not fit the above two forms is a computed
  244. include. @var{anything else} is checked for macro calls, which are
  245. expanded (@pxref{Macros}). When this is done, the result must fit
  246. one of the above two variants.
  247. This feature allows you to define a macro which controls the file name
  248. to be used at a later point in the program. One application of this
  249. is to allow a site-configuration file for your program to specify the
  250. names of the system include files to be used. This can help in
  251. porting the program to various operating systems in which the
  252. necessary system header files are found in different places.
  253. @end table
  254. @node Include Operation,, Include Syntax, Header Files
  255. @subsection How @samp{#include} Works
  256. The @samp{#include} command works by directing the C preprocessor to scan
  257. the specified file as input before continuing with the rest of the current
  258. file. The output from the preprocessor contains the output already
  259. generated, followed by the output resulting from the included file,
  260. followed by the output that comes from the text after the @samp{#include}
  261. command. For example, given two files as follows:
  262. @example
  263. /* File program.c */
  264. int x;
  265. #include "header.h"
  266. main ()
  267. @{
  268. printf (test ());
  269. @}
  270. /* File header.h */
  271. char *test ();
  272. @end example
  273. @noindent
  274. the output generated by the C preprocessor for @file{program.c} as input
  275. would be
  276. @example
  277. int x;
  278. char *test ();
  279. main ()
  280. @{
  281. printf (test ());
  282. @}
  283. @end example
  284. Included files are not limited to declarations and macro definitions; they
  285. are merely the typical use. Any fragment of a C program can be included
  286. from another file. The include file could even contain the beginning of a
  287. statement that is concluded in the containing file, or the end of a
  288. statement that was started in the including file. However, a comment or a
  289. string or character constant may not start in the included file and finish
  290. in the including file. An unterminated comment, string constant or
  291. character constant in an included file is considered to end (with an error
  292. message) at the end of the file.
  293. The line following the @samp{#include} command is always treated as a
  294. separate line by the C preprocessor even if the included file lacks a final
  295. newline.
  296. @node Macros, Conditionals, Header Files, Top
  297. @section Macros
  298. A macro is a sort of abbreviation which you can define once and then
  299. use later. There are many complicated features associated with macros
  300. in the C preprocessor.
  301. @menu
  302. * Simple Macros:: Macros that always expand the same way.
  303. * Argument Macros:: Macros that accept arguments that are substituted
  304. into the macro expansion.
  305. * Predefined:: Predefined macros that are always available.
  306. * Stringification:: Macro arguments converted into string constants.
  307. * Concatenation:: Building tokens from parts taken from macro arguments.
  308. * Undefining:: Cancelling a macro's definition.
  309. * Redefining:: Changing a macro's definition.
  310. * Macro Pitfalls:: Macros can confuse the unwary. Here we explain
  311. several common problems and strange features.
  312. @end menu
  313. @node Simple Macros, Argument Macros, Macros, Macros
  314. @subsection Simple Macros
  315. A @dfn{simple macro} is a kind of abbreviation. It is a name which stands
  316. for a fragment of code.
  317. Before you can use a macro, you must @dfn{define} it explicitly with the
  318. @samp{#define} command. @samp{#define} is followed by the name of the
  319. macro and then the code it should be an abbreviation for. For example,
  320. @example
  321. #define BUFFER_SIZE 1020
  322. @end example
  323. @noindent
  324. defines a macro named @samp{BUFFER_SIZE} as an abbreviation for the text
  325. @samp{1020}. Therefore, if somewhere after this @samp{#define} command
  326. there comes a C statement of the form
  327. @example
  328. foo = (char *) xmalloc (BUFFER_SIZE);
  329. @end example
  330. @noindent
  331. then the C preprocessor will recognize and @dfn{expand} the macro
  332. @samp{BUFFER_SIZE}, resulting in
  333. @example
  334. foo = (char *) xmalloc (1020);
  335. @end example
  336. @noindent
  337. the definition must be a single line; however, it may not end in the
  338. middle of a multi-line string constant or character constant.
  339. The use of all upper case for macro names is a standard convention.
  340. Programs are easier to read when it is possible to tell at a glance which
  341. names are macros.
  342. Normally, a macro definition must be a single line, like all C preprocessor
  343. commands. (You can split a long macro definition cosmetically with
  344. Backslash-Newline.) There is one exception: Newlines can be included in
  345. the macro definition if within a string or character constant. By the same
  346. token, it is not possible for a macro definition to contain an unbalanced
  347. quote character; the definition automatically extends to include the
  348. matching quote character that ends the string or character constant.
  349. Comments within a macro definition may contain Newlines, which make no
  350. difference since the comments are entirely replaced with Spaces regardless
  351. of their contents.
  352. Aside from the above, there is no restriction on what can go in a macro
  353. body. Parentheses need not balance. The body need not resemble valid C
  354. code. (Of course, you might get error messages from the C compiler when
  355. you use the macro.)
  356. The C preprocessor scans your program sequentially, so macro definitions
  357. take effect at the place you write them. Therefore, the following input to
  358. the C preprocessor
  359. @example
  360. foo = X;
  361. #define X 4
  362. bar = X;
  363. @end example
  364. @noindent
  365. produces as output
  366. @example
  367. foo = X;
  368. bar = 4;
  369. @end example
  370. After the preprocessor expands a macro name, the macro's definition body is
  371. appended to the front of the remaining input, and the check for macro calls
  372. continues. Therefore, the macro body can contain calls to other macros.
  373. For example, after
  374. @example
  375. #define BUFSIZE 1020
  376. #define TABLESIZE BUFSIZE
  377. @end example
  378. @noindent
  379. the name @samp{TABLESIZE} when used in the program would go through two
  380. stages of expansion, resulting ultimately in @samp{1020}.
  381. This is not at all the same as defining @samp{TABLESIZE} to be @samp{1020}.
  382. The @samp{#define} for @samp{TABLESIZE} uses exactly the body you
  383. specify---in this case, @samp{BUFSIZE}---and does not check to see whether
  384. it too is the name of a macro. It's only when you @emph{use} @samp{TABLESIZE}
  385. that the result of its expansion is checked for more macro names.
  386. @xref{Cascaded Macros}.
  387. @node Argument Macros, Predefined, Simple Macros, Macros
  388. @subsection Macros with Arguments
  389. A simple macro always stands for exactly the same text, each time it is
  390. used. Macros can be more flexible when they accept @dfn{arguments}.
  391. Arguments are fragments of code that you supply each time the macro is
  392. used. These fragments are included in the expansion of the macro according
  393. to the directions in the macro definition.
  394. To define a macro that uses arguments, you write a @samp{#define} command
  395. with a list of @dfn{argument names} in parentheses after the name of the
  396. macro. The argument names may be any valid C identifiers, separated by
  397. commas and optionally whitespace. The open-parenthesis must follow the
  398. macro name immediately, with no space in between.
  399. For example, here is a macro that computes the minimum of two numeric
  400. values:
  401. @example
  402. #define min(X, Y) ((X) < (Y) ? (X) : (Y))
  403. @end example
  404. To use a macro that expects arguments, you write the name of the macro
  405. followed by a list of @dfn{actual arguments} in parentheses. separated by
  406. commas. The number of actual arguments you give must match the number of
  407. arguments the macro expects. Examples of use of the macro @samp{min}
  408. include @samp{min (1, 2)} and @samp{min (x + 28, *p)}.
  409. The expansion text of the macro depends on the arguments you use.
  410. Each of the argument names of the macro is replaced, throughout the
  411. macro definition, with the corresponding actual argument. Using the
  412. same macro @samp{min} defined above, @samp{min (1, 2)} expands into
  413. @example
  414. ((1) < (2) ? (1) : (2))
  415. @end example
  416. @noindent
  417. where @samp{1} has been substituted for @samp{X} and @samp{2} for @samp{Y}.
  418. Likewise, @samp{min (x + 28, *p)} expands into
  419. @example
  420. ((x + 28) < (*p) ? (x + 28) : (*p))
  421. @end example
  422. Parentheses in the actual arguments must balance; a comma within
  423. parentheses does not end an argument. However, there is no requirement for
  424. brackets or braces to balance; thus, if you want to supply @samp{array[x =
  425. y, x + 1]} as an argument, you must write it as @samp{array[(x = y, x +
  426. 1)]}, which is equivalent C code.
  427. After the actual arguments are substituted into the macro body, the entire
  428. result is appended to the front of the remaining input, and the check for
  429. macro calls continues. Therefore, the actual arguments can contain calls
  430. to other macros, either with or without arguments, or even to the same
  431. macro. The macro body can also contain calls to other macros. For
  432. example, @samp{min (min (a, b), c)} expands into
  433. @example
  434. ((((a) < (b) ? (a) : (b))) < (c)
  435. ? (((a) < (b) ? (a) : (b)))
  436. : (c))
  437. @end example
  438. @noindent
  439. (Line breaks shown here for clarity would not actually be generated.)
  440. If you use the macro name followed by something other than an
  441. open-parenthesis, it is not a call to the macro, and the preprocessor does
  442. not change what you have written. Therefore, it is possible for the same
  443. name to be a variable or function in your program as well as a macro,
  444. and you can choose in each instance whether to refer to the macro
  445. (if an actual argument list follows) or the variable or function (if
  446. an argument list does not follow).
  447. Such dual use of one name could be confusing and should be avoided
  448. except when the two meanings are effectively synonymous: that is, when the
  449. name is both a macro and a function and the two have similar effects. You
  450. can think of the name simply as as a function; use of the name for purposes
  451. other than calling it (such as, to take the address) will refer to the
  452. function, while calls will expand the macro and generate better but
  453. equivalent code. For example, you can use a function named @samp{min} in
  454. the same source file that defines the macro. If you write @samp{&min} with
  455. no argument list, you refer to the function. If you write @samp{min (x,
  456. bb)}, with an argument list, the macro is expanded. If you write
  457. @samp{(min) (a, bb)}, where the name @samp{min} is not followed by an
  458. open-parenthesis, the macro is not expanded, so you wind up with a call to
  459. the function @samp{min}.
  460. It is not allowed to define the same name as both a simple macro and
  461. a macro with arguments.
  462. In the definition of a macro with arguments, the list of argument names
  463. must follow the macro name immediately with no space in between. If there
  464. is a space after the macro name, the macro is defined as taking no
  465. arguments, and all the rest of the name is taken to be the expansion.
  466. The reason for this is that it is often useful to define a macro that
  467. takes no arguments and whose definition begins with an identifier in
  468. parentheses. This rule about spaces makes it possible for you to do either
  469. @example
  470. #define FOO(x) - 1 / (x)
  471. @end example
  472. @noindent
  473. which defines @samp{FOO} to take an argument and expand into minus the
  474. reciprocal of that argument, or
  475. @example
  476. #define BAR (x) - 1 / (x)
  477. @end example
  478. @noindent
  479. which defines @samp{BAR} to take no argument and always expand into
  480. @samp{(x) - 1 / (x)}.
  481. @node Predefined, Stringification, Argument Macros, Macros
  482. @subsection Predefined Macros
  483. @cindex predefined macros
  484. Several simple macros are predefined. You can use them without giving
  485. definitions for them. They fall into two classes: standard macros and
  486. system-specific macros.
  487. @menu
  488. * Standard Predefined:: Standard predefined macros.
  489. * Nonstandard Predefined:: Nonstandard predefined macros.
  490. @end menu
  491. @node Standard Predefined, Nonstandard Predefined, Predefined, Predefined
  492. @subsubsection Standard Predefined Macros
  493. The standard predefined macros are available with the same meanings on all
  494. operating systems and all kinds of machines. Their names all start and end
  495. with double underscores. Here is a table of them.
  496. @table @code
  497. @item __FILE__
  498. @findex __FILE__
  499. This macro expands to the name of the current input file, in the form
  500. of a C string constant.
  501. @item __LINE__
  502. @findex __LINE__
  503. This macro expands to the current input line number, in the form of a
  504. decimal integer constant. While we call it a predefined macro, it's
  505. a pretty strange macro, since its ``definition'' changes with each
  506. new line of source code.
  507. This and @samp{__FILE__} are useful in generating an error message to
  508. report an inconsistency detected by the program; the message can state
  509. the source line at which the inconsistency was detected. For example,
  510. @example
  511. fprintf (stderr, "Internal error: negative string length "
  512. "%d at %s, line %d.",
  513. length, __FILE__, __LINE__);
  514. @end example
  515. A @samp{#include} command changes the expansions of @samp{__FILE__}
  516. and @samp{__LINE__} to correspond to the included file. At the end of
  517. that file, when processing resumes on the input file that contained
  518. the @samp{#include} command, the expansions of @samp{__FILE__} and
  519. @samp{__LINE__} revert to the values they had before the
  520. @samp{#include} (but @samp{__LINE__} is then incremented by one as
  521. processing moves to the line after the @samp{#include}).
  522. The expansions of both @samp{__FILE__} and @samp{__LINE__} are altered
  523. if a @samp{#line} command is used. @xref{Combining Sources}.
  524. @item __DATE__
  525. @findex __DATE__
  526. This macro expands to a string constant that describes the date on
  527. which the preprocessor is being run. The string constant contains
  528. eleven characters and looks like @samp{"Jan 29 1987"} or @samp{"Apr
  529. @ 1 1905"}.
  530. @item __TIME__
  531. @findex __TIME__
  532. This macro expands to a string constant that describes the time at
  533. which the preprocessor is being run. The string constant contains
  534. eight characters and looks like @samp{"23:59:01"}.
  535. @item __STDC__
  536. @findex __STDC__
  537. This macro expands to the constant 1, to signify that this is ANSI
  538. Standard C. (Whether that is actually true depends on what C compiler
  539. will operate on the output from the preprocessor.)
  540. @end table
  541. @node Nonstandard Predefined,, Standard Predefined, Predefined
  542. @subsubsection Nonstandard Predefined Macros
  543. The C preprocessor normally has several predefined macros that vary between
  544. machines because their purpose is to indicate what type of system and
  545. machine is in use. This manual, being for all systems and machines, cannot
  546. tell you exactly what their names are; instead, we offer a list of some
  547. typical ones.
  548. Some nonstandard predefined macros describe the operating system in use,
  549. with more or less specificity. For example,
  550. @table @code
  551. @item unix
  552. @findex unix
  553. @samp{unix} is normally predefined on all Unix systems.
  554. @item BSD
  555. @findex BSD
  556. @samp{BSD} is predefined on recent versions of Berkeley Unix
  557. (perhaps only in version 4.3).
  558. @end table
  559. Other nonstandard predefined macros describe the kind of CPU, with more or
  560. less specificity. For example,
  561. @table @code
  562. @item vax
  563. @findex vax
  564. @samp{vax} is predefined on Vax computers.
  565. @item mc68000
  566. @findex mc68000
  567. @samp{mc68000} is predefined on most computers whose CPU is a 68000,
  568. 68010 or 68020.
  569. @item m68k
  570. @findex m68k
  571. @samp{m68k} is also predefined on most computers whose CPU is a 68000.
  572. 68010 or 68020; however, some makers use @samp{mc68000} and some use
  573. @samp{m68k}. Some predefine both names.
  574. @item M68020
  575. @findex M68020
  576. @samp{M68020} has been observed to be predefined on some systems that
  577. use 68020 CPUs---in addition to @samp{mc68000} and @samp{m68k} that
  578. are less specific.
  579. @end table
  580. Yet other nonstandard predefined macros describe the manufacturer of
  581. the system. For example,
  582. @table @code
  583. @item sun
  584. @findex sun
  585. @samp{sun} is predefined on all models of Sun computers.
  586. @item pyr
  587. @findex pyr
  588. @samp{sun} is predefined on all models of Pyramid computers.
  589. @end table
  590. These predefined symbols are not only nonstandard, they are contrary to the
  591. ANSI standard because their names do not start with underscores. However,
  592. the GNU C preprocessor would be useless if it did not predefine the same
  593. names that are normally predefined on the system and machine you are using.
  594. Even system header files check the predefined names and will generate
  595. incorrect declarations if they do not find the names that are expected.
  596. The set of nonstandard predefined names in the GNU C preprocessor is controlled
  597. by the macro @samp{PREDEFS}, which should be set with a @samp{-D} switch
  598. in the @file{Makefile} to a string constant containing names separated
  599. by commas. The Doublequotes that delimit the string constant must be
  600. escaped with Backslashes to get them through the shell. For example,
  601. @samp{\"unix,sun,m68k,mc68000\"} is used on Suns.
  602. @node Stringification, Concatenation, Predefined, Macros
  603. @subsection Stringification
  604. @cindex stringification
  605. @dfn{Stringification} means turning an code fragment into a string constant
  606. whose contents are the text for the code fragment. For example,
  607. stringifying @samp{foo (z)} results in @samp{"foo (z)"}.
  608. In the C preprocessor, stringification is an option available when macro
  609. arguments are substituted into the macro definition. In the body of the
  610. definition, when an argument name appears, the character @samp{#} before
  611. the name specifies stringification of the corresponding actual argument
  612. when it is substituted at that point in the definition. The same argument
  613. may be substituted in other places in the definition without
  614. stringification if the argument name appears in those places with no
  615. @samp{#}.
  616. Here is an example of a macro definition that uses stringification:
  617. @example
  618. #define WARN_IF(EXP) \
  619. do @{ if (EXP) fprintf (stderr, "Warning: " #EXP "\n"); @} while (0)
  620. @end example
  621. @noindent
  622. Here the actual argument for @samp{EXP} is substituted once as given,
  623. into the @samp{if} statement, and once as stringified, into the
  624. argument to @samp{fprintf}. The @samp{do} and @samp{while (0)} are
  625. a kludge to make it possible to write @samp{WARN_IF (@var{arg});},
  626. which the resemblance of @samp{WARN_IF} to a function would make
  627. C programmers want to do; @pxref{Swallow Semicolon}).
  628. The stringification feature is limited to transforming one macro argument
  629. into one string constant: there is no way to combine the argument with
  630. other text and then stringify it all together. But the example above shows
  631. how an equivalent result can be obtained in ANSI Standard C using the
  632. feature that adjacent string constants are concatenated as one string
  633. constant. The preprocessor stringifies @samp{EXP}'s actual argument
  634. into a separate string constant, resulting in text like
  635. @example
  636. do @{ if (x == 0) fprintf (stderr, "Warning: " "x == 0" "\n"); @} while (0)
  637. @end example
  638. @noindent
  639. but the C compiler then sees three consecutive string constants and
  640. concatenates them into one, producing effectively
  641. @example
  642. do @{ if (x == 0) fprintf (stderr, "Warning: x == 0\n"); @} while (0)
  643. @end example
  644. Stringification in C involves more than putting doublequote characters
  645. around the fragment; it is necessary to put backslashes in front of all
  646. doublequote characters, and all backslashes in string and character
  647. constants, in order to get a valid C string constant with the proper
  648. contents. Thus, stringifying @samp{p = "foo\n";} results in @samp{"p =
  649. \"foo\\n\";"}. However, backslashes that are not inside of string or
  650. character constants are not duplicated: @samp{\n} by itself stringifies to
  651. @samp{"\n"}.
  652. Whitespace (including comments) in the text being stringified is handled
  653. according to precise rules. All leading and trailing whitespace is ignored.
  654. Any sequence of whitespace in the middle of the text is converted to
  655. a single space in the stringified result.
  656. @node Concatenation, Undefining, Stringification, Macros
  657. @subsection Concatenation
  658. @cindex concatenation
  659. @dfn{Concatenation} means joining two strings into one. In the context
  660. of macro expansion, concatenation refers to joining two lexical units
  661. into one longer one. Specifically, an actual argument to the macro can be
  662. concatenated with another actual argument or with fixed text to produce
  663. a longer name. The longer name might be the name of a function,
  664. variable or type, or a C keyword; it might even be the name of another
  665. macro, in which case it will be expanded.
  666. When you define a macro, you request concatenation with the special
  667. operator @samp{##} in the macro body. When the macro is called,
  668. after actual arguments are substituted, all @samp{##} operators are
  669. deleted, and so is any whitespace next to them (including whitespace
  670. that was part of an actual argument). The result is to concatenate
  671. the syntactic tokens on either side of the @samp{##}.
  672. Consider a C program that interprets named commands. There probably needs
  673. to be a table of commands, perhaps an array of structures declared as
  674. follows:
  675. @example
  676. struct command
  677. @{
  678. char *name;
  679. void (*function) ();
  680. @};
  681. struct command commands[] =
  682. @{
  683. @{ "quit", quit_command@},
  684. @{ "help", help_command@},
  685. @dots{}
  686. @};
  687. @end example
  688. It would be cleaner not to have to give each command name twice, once in
  689. the string constant and once in the function name. A macro which takes the
  690. name of a command as an argument can make this unnecessary. The string
  691. constant can be created with stringification, and the function name by
  692. concatenating the argument with @samp{_command}. Here is how it is done:
  693. @example
  694. #define COMMAND(NAME) @{ #NAME, NAME ## _command @}
  695. struct command commands[] =
  696. @{
  697. COMMAND (quit),
  698. COMMAND (help),
  699. @dots{}
  700. @};
  701. @end example
  702. The usual case of concatenation is concatenating two names (or a name and a
  703. number) into a longer name. But this isn't the only valid case. It is
  704. also possible to concatenate two numbers (or a number and a name, such as
  705. @samp{1.5} and @samp{e3}) into a number. Also, multi-character operators
  706. such as @samp{+=} can be formed by concatenation. In some cases it is even
  707. possible to piece together a string constant. However, two pieces of text
  708. that don't together form a valid lexical unit cannot be concatenated. For
  709. example, concatenation with @samp{x} on one side and @samp{+} on the other
  710. is not meaningful because those two characters can't fit together in any
  711. lexical unit of C. The ANSI standard says that such attempts at
  712. concatenation are undefined, but in the GNU C preprocessor it is well
  713. defined: it puts the @samp{x} and @samp{+} side by side with no particular
  714. special results.
  715. Keep in mind that the C preprocessor converts comments to whitespace before
  716. macros are even considered. Therefore, you cannot create a comment by
  717. concatenating @samp{/} and @samp{*}: the @samp{/*} sequence that starts a
  718. comment is not a lexical unit, but rather the beginning of a ``long'' space
  719. character. Also, you can freely use comments next to a @samp{##} in a
  720. macro definition, or in actual arguments that will be concatenated, because
  721. the comments will be converted to spaces at first sight, and concatenation
  722. will later discard the spaces.
  723. @node Undefining, Redefining, Concatenation, Macros
  724. @subsection Undefining Macros
  725. @cindex undefining macros
  726. To @dfn{undefine} a macro means to cancel its definition. This is done
  727. with the @samp{#undef} command. @samp{#undef} is followed by the macro
  728. name to be undefined.
  729. Like definition, undefinition occurs at a specific point in the source
  730. file, and it applies starting from that point. The name ceases to be a
  731. macro name, and from that point on it is treated by the preprocessor as if
  732. it had never been a macro name.
  733. For example,
  734. @example
  735. #define FOO 4
  736. x = FOO;
  737. #undef FOO
  738. x = FOO;
  739. @end example
  740. @noindent
  741. expands into
  742. @example
  743. x = 4;
  744. x = FOO;
  745. @end example
  746. @noindent
  747. In this example, @samp{FOO} had better be a variable or function as well
  748. as (temporarily) a macro, in order for the result of the expansion to be
  749. valid C code.
  750. The same form of @samp{#undef} command will cancel definitions with
  751. arguments or definitions that don't expect arguments. The @samp{#undef}
  752. command has no effect when used on a name not currently defined as a macro.
  753. @node Redefining, Macro Pitfalls, Undefining, Macros
  754. @subsection Redefining Macros
  755. @cindex redefining macros
  756. @dfn{Redefining} a macro means defining (with @samp{#define}) a name that
  757. is already defined as a macro.
  758. A redefinition is trivial if the new definition is transparently identical
  759. to the old one. You probably wouldn't deliberately write a trivial
  760. redefinition, but they can happen automatically when a header file is
  761. included more than once (@pxref{Header Files}), so they are accepted
  762. silently and without effect.
  763. Nontrivial redefinition is considered likely to be an error, so
  764. it provokes a warning message from the preprocessor. However, sometimes it
  765. is useful to change the definition of a macro in mid-compilation. You can
  766. inhibit the warning by undefining the macro with @samp{#undef} before the
  767. second definition.
  768. In order for a reefinition to be trivial, the new definition must exactly match
  769. the one already in effect, with two possible exceptions:
  770. @itemize @bullet
  771. @item
  772. Whitespace may be added or deleted at the beginning or the end.
  773. @item
  774. Whitespace may be changed in the middle (but not inside strings).
  775. However, it may not be eliminated entirely, and it may not be added
  776. where there was no whitespace at all.
  777. @end itemize
  778. Recall that a comment counts as whitespace.
  779. @node Macro Pitfalls,, Redefining, Macros
  780. @subsection Pitfalls and Subtleties of Macros
  781. In this section we describe some special rules that apply to macros and
  782. macro expansion, and point out certain cases in which the rules have
  783. counterintuitive consequences that you must watch out for.
  784. @menu
  785. * Misnesting:: Macros can contain unmatched parentheses.
  786. * Macro Parentheses:: Why apparently superfluous parentheses
  787. may be necessary to avoid incorrect grouping.
  788. * Swallow Semicolon:: Macros that look like functions
  789. but expand into compound statements.
  790. * Side Effects:: Unsafe macros that cause trouble when
  791. arguments contain side effects.
  792. * Self-Reference:: Macros whose definitions use the macros' own names.
  793. * Argument Prescan:: Actual arguments are checked for macro calls
  794. before they are substituted.
  795. * Cascaded Macros:: Macros whose definitions use other macros.
  796. @end menu
  797. @node Misnesting, Macro Parentheses, Macro Pitfalls, Macro Pitfalls
  798. @subsubsection Improperly Nested Constructs
  799. Recall that when a macro is called with arguments, the arguments are
  800. substituted into the macro body and the result is checked, together with
  801. the rest of the input file, for more macro calls.
  802. It is possible to piece together a macro call coming partially from the
  803. macro body and partially from the actual arguments. For example,
  804. @example
  805. #define double(x) (2*(x))
  806. #define call_with_1(x) x(1)
  807. @end example
  808. @noindent
  809. would expand @samp{call_with_1 (double)} into @samp{(2*(1))}.
  810. Macro definitions do not have to have balanced parentheses. By writing an
  811. unbalanced open parenthesis in a macro body, it is possible to create a
  812. macro call that begins inside the macro body but ends outside of it. For
  813. example,
  814. @example
  815. #define strange(file) fprintf (file, "%s %d",
  816. @dots{}
  817. strange(stderr) p, 35)
  818. @end example
  819. @noindent
  820. This bizarre example expands to @samp{fprintf (stderr, "%s %d", p, 35)}!
  821. @node Macro Parentheses, Swallow Semicolon, Misnesting, Macro Pitfalls
  822. @subsubsection Unintended Grouping of Arithmetic
  823. You may have noticed that in most of the macro definition examples shown
  824. above, each occurrence of a macro argument name had parentheses around it.
  825. In addition, another pair of parentheses usually surround the entire macro
  826. definition. Here is why it is best to write macros that way.
  827. Suppose you define a macro as follows
  828. @example
  829. #define ceil_div(x, y) (x + y - 1) / y
  830. @end example
  831. @noindent
  832. whose purpose is to divide, rounding up. (One use for this
  833. operation is to compute how many @samp{int}'s are needed to hold
  834. a certain number of @samp{char}'s.) Then suppose it is used as follows:
  835. @example
  836. a = ceil_div (b & c, sizeof (int));
  837. @end example
  838. @noindent
  839. This expands into
  840. @example
  841. a = (b & c + sizeof (int) - 1) / sizeof (int);
  842. @end example
  843. @noindent
  844. which is does not do what is intended the operator-precedence rules of
  845. C make it equivalent to
  846. @example
  847. a = (b & (c + sizeof (int) - 1)) / sizeof (int);
  848. @end example
  849. What we want is
  850. @example
  851. a = ((b & c) + sizeof (int) - 1)) / sizeof (int);
  852. @end example
  853. @noindent
  854. Defining the macro as
  855. @example
  856. #define ceil_div(x, y) ((x) + (y) - 1) / (y)
  857. @end example
  858. @noindent
  859. provides the desired result.
  860. However, unintended grouping can result in another way. Consider
  861. @samp{sizeof ceil_div(1, 2)}. That has the appearance of a C expression
  862. that would compute the size of the type of @samp{ceil_div (1, 2)}, but in
  863. fact it means something very different. Here is what it expands to:
  864. @example
  865. sizeof ((1) + (2) - 1) / (2)
  866. @end example
  867. @noindent
  868. This would take the size of an integer and divide it by two. The precedence
  869. rules have put the division outside the @samp{sizeof} when it was intended
  870. to be inside.
  871. Parentheses around the entire macro definition can prevent such problems.
  872. Here, then, is the recommended way to define @samp{ceil_div}:
  873. @example
  874. #define ceil_div(x, y) (((x) + (y) - 1) / (y))
  875. @end example
  876. @node Swallow Semicolon, Side Effects, Macro Parentheses, Macro Pitfalls
  877. @subsubsection Swallowing the Semicolon
  878. @cindex semicolons (after macro calls)
  879. Often it is desirable to define a macro that expands into a compound
  880. statement. Consider, for example, the following macro, that advances a
  881. pointer (the argument @samp{p} says where to find it) across whitespace
  882. characters:
  883. @example
  884. #define SKIP_SPACES (p, limit) \
  885. @{ register char *lim = (limit); \
  886. while (p != lim) @{ \
  887. if (*p++ != ' ') @{ \
  888. p--; break; @}@}@}
  889. @end example
  890. @noindent
  891. Here Backslash-Newline is used to split the macro definition, which must
  892. be a single line, so that it resembles the way such C code would be
  893. layed out if not part of a macro definition.
  894. A call to this macro might be @samp{SKIP_SPACES (p, lim)}. Strictly
  895. speaking, the call expands to a compound statement, which is a complete
  896. statement with no need for a semicolon to end it. But it looks like a
  897. function call. So it minimizes confusion if you can use it like a function
  898. call, writing a semicolon afterward, as in @samp{SKIP_SPACES (p, lim);}
  899. But this can cause trouble before @samp{else} statements, because the
  900. semicolon is actually a null statement. Suppose you write
  901. @example
  902. if (*p != 0)
  903. SKIP_SPACES (p, lim);
  904. else @dots{}
  905. @end example
  906. The presence of two statements---the compound statement and a null
  907. statement---in between the @samp{if} condition and the @samp{else}
  908. makes invalid C code.
  909. The definition of the macro @samp{SKIP_SPACES} can be altered to solve
  910. this problem, using a @samp{do @dots{} while} statement. Here is how:
  911. @example
  912. #define SKIP_SPACES (p, limit) \
  913. do @{ register char *lim = (limit); \
  914. while (p != lim) @{ \
  915. if (*p++ != ' ') @{ \
  916. p--; break; @}@}@} \
  917. while (0)
  918. @end example
  919. Now @samp{SKIP_SPACES (p, lim);} expands into
  920. @example
  921. do @{@dots{}@} while (0);
  922. @end example
  923. which is one statement.
  924. @node Side Effects, Self-Reference, Swallow Semicolon, Macro Pitfalls
  925. @subsubsection Duplication of Side Effects
  926. @cindex side effects (in macro arguments)
  927. @cindex unsafe macros
  928. Let's consider a call to the macro @samp{min}:
  929. @example
  930. #define min(X, Y) ((X) < (Y) ? (X) : (Y))
  931. @dots{}
  932. next = min (x + y, foo (z));
  933. @end example
  934. expands into
  935. @example
  936. next = ((x + y) < (foo (z)) ? (x + y) : (foo (z)));
  937. @end example
  938. where @samp{x + y} has been substituted for @samp{X} and @samp{foo (z)}
  939. for @samp{Y}.
  940. The function @samp{foo} is used only once in the statement as it appears
  941. in the program, but the expression @samp{foo (z)} has been substituted
  942. twice into the macro expansion. As a result, @samp{foo} might be called
  943. two times when the statement is executed. If it has side effects or
  944. if it takes a long time to compute, the results might not be what you
  945. intended. We say that @samp{min} is an @dfn{unsafe} macro.
  946. Solving this problem cleanly would involve defining @samp{min} in
  947. a way that would compute the value of @samp{foo (z)} only once.
  948. Unfortunately, the C language offers no way to do this. So the only
  949. solution is to be careful when @emph{using} the macro @samp{min}.
  950. For example, you can calculate the value of @samp{foo (z)}, save it
  951. in a variable, and use that variable in @samp{min}:
  952. @example
  953. #define min(X, Y) ((X) < (Y) ? (X) : (Y))
  954. @dots{}
  955. @{
  956. int tem = foo (z);
  957. next = min (x + y, tem);
  958. @}
  959. @end example
  960. @noindent
  961. (where I assume that @samp{foo} returns type @samp{int}).
  962. @node Self-Reference, Argument Prescan, Side Effects, Macro Pitfalls
  963. @subsubsection Self-Referential Macros
  964. @cindex self-reference
  965. A @dfn{self-referential} macro is one whose name appears in its definition.
  966. A special feature of ANSI Standard C is that the self-reference is not
  967. considered a macro call. It is passed into the preprocessor output
  968. unchanged.
  969. Let's consider an example:
  970. @example
  971. #define foo (4 + foo)
  972. @end example
  973. @noindent
  974. where @samp{foo} is also a variable in your program.
  975. Following the ordinary rules, each reference to @samp{foo} will expand into
  976. @samp{(4 + foo)}; then this will be rescanned and will expand into @samp{(4
  977. + (4 + foo))}; and so on until it causes a fatal error (memory full) in the
  978. preprocessor.
  979. However, the special rule about self-reference cuts this process short
  980. after one step, at @samp{(4 + foo)}. Therefore, this macro definition
  981. has the possibly useful effect of causing the program to add 4 to
  982. the value of @samp{foo} wherever @samp{foo} is referred to.
  983. In most cases, it is a bad idea to take advantage of this feature.
  984. A person reading the program who sees that @samp{foo} is a variable will
  985. not expect that it is a macro as well. The reader will come across a
  986. the identifier @samp{foo} in the program and think its value should be
  987. that of the variable @samp{foo}, whereas in fact the value is four
  988. greater.
  989. The special rule for self-reference applies also to @dfn{indirect}
  990. self-reference. This is the case where a macro @var{x} expands to use a
  991. macro @samp{y}, and @samp{y}'s expansion refers to the macro @samp{x}. The
  992. resulting reference to @samp{x} comes indirectly from the expansion of
  993. @samp{x}, so it is a self-reference and is not further expanded. Thus,
  994. after
  995. @example
  996. #define x (4 + y)
  997. #define y (2 * x)
  998. @end example
  999. @noindent
  1000. @samp{x} would expand into @samp{(4 + (2 * x))}. Clear?
  1001. But suppose @samp{y} is used elsewhere, not from the definition of @samp{x}.
  1002. Then the use of @samp{x} in the expansion of @samp{y} is not a self-reference
  1003. because @samp{x} is not ``in progress''. So it does expand. However,
  1004. the expansion of @samp{x} contains a reference to @samp{y}, and that
  1005. is an indirect self-reference now because @samp{y} is ``in progress''.
  1006. The result is that @samp{y} expands to @samp{(2 * (4 + y))}.
  1007. It is not clear that this behavior would ever be useful, but it is specified
  1008. by the ANSI C standard, so you need to understand it.
  1009. @node Argument Prescan, Cascaded Macros, Self-Reference, Macro Pitfalls
  1010. @subsubsection Separate Expansion of Macro Arguments
  1011. We have explained that the expansion of a macro, including the substituted
  1012. actual arguments, is scanned over again for macro calls to be expanded.
  1013. What really happens is more subtle: first each actual argument text is scanned
  1014. separately for macro calls. Then the results of this are substituted into
  1015. the macro body to produce the macro expansion, and the macro expansion
  1016. is scanned again for macros to expand.
  1017. The result is that the actual arguments are scanned @emph{twice} to expand
  1018. macro calls in them.
  1019. Most of the time, this has no effect. If the actual argument contained
  1020. any macro calls, they are expanded during the first scan. The result
  1021. therefore contains no macro calls, so the second scan does not change it.
  1022. If the actual argument were substituted as given, with no prescan,
  1023. the single remaining scan would find the same macro calls and produce
  1024. the same results.
  1025. You might expect the double scan to change the results when a
  1026. self-referential macro is used in an actual argument of another macro
  1027. (@pxref{Self-Reference}): the self-referential macro would be expanded once
  1028. in the first scan, and a second time in the second scan. But this is not
  1029. what happens. The self-references that do not expand in the first scan are
  1030. marked so that they will not expand in the second scan either.
  1031. The prescan is not done when an argument is stringified or concatenated.
  1032. (More precisely, stringification and concatenation use the argument as
  1033. written, in un-prescanned form. The same actual argument would be used in
  1034. prescanned form if it is substituted elsewhere without stringification or
  1035. concatenation.) Thus,
  1036. @example
  1037. #define str(s) #s
  1038. #define foo 4
  1039. str (foo)
  1040. @end example
  1041. @noindent
  1042. expands to @samp{"foo"}. Once more, prescan has been prevented from
  1043. having any noticeable effect.
  1044. You might now ask, ``Why mention the prescan, if it makes no difference?
  1045. Why not skip it and make the preprocessor faster?'' The answer is that the
  1046. prescan does make a difference in two special cases:
  1047. @itemize @bullet
  1048. @item
  1049. Nested calls to a macro.
  1050. @item
  1051. Macros that call other macros that stringify or concatenate.
  1052. @end itemize
  1053. We say that @dfn{nested} calls to a macro occur when a macro's actual
  1054. argument contains a call to that very macro. For example, if @samp{f}
  1055. is a macro that expects one argument, @samp{f (f (1))} is a nested
  1056. pair of calls to @samp{f}. The desired expansion is made by
  1057. expanding @samp{f (1)} and substituting that into the definition of
  1058. @samp{f}. The prescan causes the expected result to happen.
  1059. Without the prescan, @samp{f (1)} itself would be substituted as
  1060. an actual argument, and the inner use of @samp{f} would appear
  1061. during the main scan as an indirect self-reference and would not
  1062. be expanded. Here, the prescan cancels an undesirable side effect
  1063. (in the medical, not computational, sense of the term) of the special
  1064. rule for self-referential macros.
  1065. There is also one case where prescan is useful. It is possible
  1066. to use prescan to expand an argument and then stringify it---if you use
  1067. two levels of macros. Let's add a new macro @samp{xstr} to the
  1068. example shown above:
  1069. @example
  1070. #define xstr(s) str(s)
  1071. #define str(s) #s
  1072. #define foo 4
  1073. xstr (foo)
  1074. @end example
  1075. This expands into @samp{"4"}, not @samp{"foo"}. The reason for the
  1076. difference is that the argument of @samp{xstr} is expanded at prescan
  1077. (because @samp{xstr} does not specify stringification or concatenation of
  1078. the argument). The result of prescan then forms the actual argument for
  1079. @samp{str}. @samp{str} uses its argument without prescan because it
  1080. performs strigification; but it cannot prevent or undo the prescanning
  1081. already done by @samp{xstr}.
  1082. @node Cascaded Macros,, Argument Prescan, Macro Pitfalls
  1083. @subsubsection Cascaded Use of Macros
  1084. @cindex cascaded macros
  1085. @cindex macro body uses macro
  1086. A @dfn{cascade} of macros is when one macro's body contains a reference
  1087. to another macro. This is very common practice. For example,
  1088. @example
  1089. #define BUFSIZE 1020
  1090. #define TABLESIZE BUFSIZE
  1091. @end example
  1092. This is not at all the same as defining @samp{TABLESIZE} to be @samp{1020}.
  1093. The @samp{#define} for @samp{TABLESIZE} uses exactly the body you
  1094. specify---in this case, @samp{BUFSIZE}---and does not check to see whether
  1095. it too is the name of a macro.
  1096. It's only when you @emph{use} @samp{TABLESIZE} that the result of its expansion
  1097. is checked for more macro names.
  1098. This makes a difference if you change the definition of @samp{BUFSIZE}
  1099. at some point in the source file. @samp{TABLESIZE}, defined as shown,
  1100. will always expand using the definition of @samp{BUFSIZE} that is
  1101. currently in effect:
  1102. @example
  1103. #define BUFSIZE 1020
  1104. #define TABLESIZE BUFSIZE
  1105. #undef BUFSIZE
  1106. #define BUFSIZE 37
  1107. @end example
  1108. Now @samp{TABLESIZE} expands (in two stages) to @samp{37}.
  1109. @node Conditionals, Combining Sources, Macros, Top
  1110. @section Conditionals
  1111. @cindex conditionals
  1112. In a macro processor, a @dfn{conditional} is a command that allows a part
  1113. of the program to be ignored during compilation, on some conditions.
  1114. In the C preprocessor, a conditional can test either an arithmetic expression
  1115. or whether a name is defined as a macro.
  1116. A conditional in the C preprocessor resembles in some ways an @samp{if}
  1117. statement in C, but it is important to understand the difference between
  1118. them. The condition in an @samp{if} statement is tested during the execution
  1119. of your program. Its purpose is to allow your program to behave differently
  1120. from run to run, depending on the data it is operating on. The condition
  1121. in a preprocessor conditional command is tested when your program is compiled.
  1122. Its purpose is to allow different code to be included in the program depending
  1123. on the situation at the time of compilation.
  1124. @menu
  1125. * Uses: Conditional Uses. What conditionals are for.
  1126. * Syntax: Conditional Syntax. How conditionals are written.
  1127. * Deletion: Deleted Code. Making code into a comment.
  1128. * Macros: Conditionals-Macros. Why conditionals are used with macros.
  1129. * Errors: #error Command. Detecting inconsistent compilation parameters.
  1130. @end menu
  1131. @node Conditional Uses, Conditional Syntax, Conditionals, Conditionals
  1132. Generally there are three kinds of reason to use a conditional.
  1133. @itemize @bullet
  1134. @item
  1135. A program may need to use different code depending on the machine or
  1136. operating system it is to run on. In some cases the code for one
  1137. operating system may be erroneous on another operating system; for
  1138. example, it might refer to library routines that do not exist on the
  1139. other system. When this happens, it is not enough to avoid executing
  1140. the invalid code: merely having it in the program makes it impossible
  1141. to link the program and run it. With a preprocessor conditional, the
  1142. offending code can be effectively excised from the program when it is
  1143. not valid.
  1144. @item
  1145. You may want to be able to compile the same source file into two
  1146. different programs. Sometimes the difference between the programs is
  1147. that one makes frequent time-consuming consistency checks on its
  1148. intermediate data while the other does not.
  1149. @item
  1150. A conditional whose condition is always false is a good way to exclude
  1151. code from the program but keep it as a sort of comment for future
  1152. reference.
  1153. @end itemize
  1154. Most simple programs that are intended to run on only one machine will
  1155. not need to use preprocessor conditionals.
  1156. @node Conditional Syntax, Conditionals-Macros, Conditional Uses, Conditionals
  1157. @subsection Syntax of Conditionals
  1158. @findex #if
  1159. A conditional in the C preprocessor begins with a @dfn{conditional
  1160. command}: @samp{#if}, @samp{#ifdef} or @samp{#ifndef}.@xref{Conditionals},
  1161. for info on @samp{#ifdef} and @samp{#ifndef}; only @samp{#if} is explained
  1162. here.
  1163. @menu
  1164. * If: #if Command. Basic conditionals using @samp{#if} and @samp{#endif}.
  1165. * Else: #else Command. Including some text if the condition fails.
  1166. * Elif: #elif Command. Testing several alternative possibilities.
  1167. @end menu
  1168. @node #if Command, #else Command, Conditional Syntax, Conditional Syntax
  1169. @subsubsection The @samp{#if} Command
  1170. The @samp{#if} command in its simplest form consists of
  1171. @example
  1172. #if @var{expression}
  1173. @var{controlled text}
  1174. #endif /* @var{expression} */
  1175. @end example
  1176. The comment following the @samp{#endif} is not required, but it is a good
  1177. practice because it helps people match the @samp{#endif} to the
  1178. corresponding @samp{#if}. Such comments should always be used, except in
  1179. short conditionals that are not nested. In fact, you can put anything at
  1180. all after the @samp{#endif} and it will be ignored by the GNU C preprocessor,
  1181. but only comments are acceptable in ANSI Standard C.
  1182. @var{expression} is a C expression of integer type, subject to stringent
  1183. restrictions. It may contain
  1184. @itemize @bullet
  1185. @item
  1186. Integer constants, which are all regarded as @code{long} or
  1187. @code{unsigned long}.
  1188. @item
  1189. Character constants, which are interpreted according to the character
  1190. set and conventions of the machine and operating system on which the
  1191. preprocessor is running. The GNU C preprocessor uses the C data type
  1192. @samp{char} for these character constants; therefore, whether some
  1193. character codes are negative is determined by the C compiler used to
  1194. compile the preprocessor. If it treats @samp{char} as signed, then
  1195. character codes large enough to set the sign bit will be considered
  1196. negative; otherwise, no character code is considered negative.
  1197. @item
  1198. Arithmetic operators for addition, subtraction, multiplication,
  1199. division, bitwise operations, shifts, comparisons, and @samp{&&} and
  1200. @samp{||}.
  1201. @item
  1202. Identifiers that are not macros, which are all treated as zero(!).
  1203. @item
  1204. Macro calls. All macro calls in the expression are expanded before
  1205. actual computation of the expression's value begins.
  1206. @end itemize
  1207. Note that @samp{sizeof} operators and @code{enum}-type values are not allowed.
  1208. @code{enum}-type values, like all other identifiers that are not taken
  1209. as macro calls and expanded, are treated as zero.
  1210. The text inside of a conditional can include preprocessor commands. Then
  1211. the commands inside the conditional are obeyed only if that branch of the
  1212. conditional succeeds. The text can also contain other conditional groups.
  1213. However, the @samp{#if}'s and @samp{#endif}'s must balance.
  1214. @node #else Command, #elif Command, #if Command, Conditional Syntax
  1215. @subsubsection The @samp{#else} Command
  1216. @findex #else
  1217. The @samp{#else} command can be added a conditional to provide alternative
  1218. text to be used if the condition is false. This looks like
  1219. @example
  1220. #if @var{expression}
  1221. @var{text-if-true}
  1222. #else /* Not @var{expression} */
  1223. @var{text-if-false}
  1224. #endif /* Not @var{expression} */
  1225. @end example
  1226. If @var{expression} is nonzero, and the @var{text-if-true} is considered
  1227. included, then @samp{#else} acts like a failing conditional and the
  1228. @var{text-if-false} is ignored. Contrariwise, if the @samp{#if}
  1229. conditional fails, the @var{text-if-false} is considered included.
  1230. @node #elif Command,, #else Command, Conditional Syntax
  1231. @subsubsection The @samp{#elif} Command
  1232. @findex #elif
  1233. One common case of nested conditionals is used to check for more than two
  1234. possible alternatives. For example, you might have
  1235. @example
  1236. #if X == 1
  1237. @dots{}
  1238. #else /* X != 1 */
  1239. #if X == 2
  1240. @dots{}
  1241. #else /* X != 2 */
  1242. @dots{}
  1243. #endif /* X != 2 */
  1244. #endif /* X != 1 */
  1245. @end example
  1246. Another conditional command, @samp{#elif}, allows this to be abbreviated
  1247. as follows:
  1248. @example
  1249. #if X == 1
  1250. @dots{}
  1251. #elif X == 2
  1252. @dots{}
  1253. #else /* X != 2 and X != 1*/
  1254. @dots{}
  1255. #endif /* X != 2 and X != 1*/
  1256. @end example
  1257. @samp{#elif} stands for ``else if''. Like @samp{#else}, it goes in the
  1258. middle of a @samp{#if}-@samp{#endif} pair and subdivides it; it does not
  1259. require a matching @samp{#endif} of its own. Like @samp{#if}, the
  1260. @samp{#elif} command includes an expression to be tested.
  1261. The text following the @samp{#elif} is processed only if the original
  1262. @samp{#if}-condition failed and the @samp{#elif} condition succeeeds. More
  1263. than one @samp{#elif} can go in the same @samp{#if}-@samp{#endif} group.
  1264. Then the text after each @samp{#elif} is processed only if the @samp{#elif}
  1265. condition succeeds after the original @samp{#if} and any previous
  1266. @samp{#elif}'s within it have failed. @samp{#else} is equivalent to
  1267. @samp{#elif 1}, and @samp{#else} is allowed after any number of
  1268. @samp{#elif}'s, but @samp{#elif} may not follow a @samp{#else}.
  1269. @node Deleted Code, Conditionals-Macros, Conditional Syntax, Conditionals
  1270. @subsection Keeping Deleted Code for Future Reference
  1271. If you replace or delete a part of the program but want to keep the old
  1272. code around as a comment for future reference, the easy way to do this is
  1273. to put @samp{#if 0} before it and @samp{#endif} after it.
  1274. This works even if the code being turned off contains conditionals, but
  1275. they must be entire conditionals (balanced @samp{#if} and @samp{#endif}).
  1276. @node Conditionals-Macros, #error Command, Deleted Code, Conditionals
  1277. @subsection Conditionals and Macros
  1278. Conditionals are rarely useful except in connection with macros. A
  1279. @samp{#if} command whose expression uses no macros is equivalent to
  1280. @samp{#if 1} or @samp{#if 0}; you might as well determine which one, by
  1281. computing the value of the expression yourself, and then simplify the
  1282. program. But when the expression uses macros, its value can vary from
  1283. compilation to compilation.
  1284. For example, here is a conditional that tests the expression
  1285. @samp{BUFSIZE == 1020}, where @samp{BUFSIZE} must be a macro.
  1286. @example
  1287. #if BUFSIZE == 1020
  1288. printf ("Large buffers!\n");
  1289. #endif /* BUFSIZE is large */
  1290. @end example
  1291. @findex defined
  1292. The special operator @samp{defined} may be used in @samp{#if} expressions
  1293. to test whether a certain name is defined as a macro. Either
  1294. @samp{defined @var{name}} or @samp{defined (@var{name})}.
  1295. @noindent
  1296. is an expression whose value is 1 if @var{name} is defined as macro at
  1297. the current point in the program, and 0 otherwise. For the
  1298. @samp{defined} operator it makes no difference what the definition of
  1299. the macro is; all that matters is whether there is a definition. Thus,
  1300. for example,
  1301. @example
  1302. #if defined (vax) || defined (ns16000)
  1303. @end example
  1304. @noindent
  1305. would include the following code if either of the names @samp{vax} and
  1306. @samp{ns16000} is defined as a macro.
  1307. If a macro is defined and later undefined with @samp{#undef},
  1308. subsequent use of the @samp{defined} operator will return 0, because
  1309. the name is no longer defined. If the macro is defined again with
  1310. another @samp{#define}, @samp{defined} will recommence returning 1.
  1311. @findex #ifdef
  1312. @findex #ifndef
  1313. Conditionals that test just the definedness of one name are very common, so
  1314. there are two special short conditional commands for this case. They are
  1315. @table @code
  1316. @item #ifdef @var{name}
  1317. is equivalent to @samp{#if defined (@var{name})}.
  1318. @item #ifndef @var{name}
  1319. is equivalent to @samp{#if ! defined (@var{name})}.
  1320. @end table
  1321. Macro definitions can vary between compilations for several reasons.
  1322. @itemize @bullet
  1323. @item
  1324. Some macros are predefined on each kind of machine. For example, on a
  1325. Vax, the name @samp{vax} is a predefined macro. On other machines, it
  1326. would not be defined.
  1327. @item
  1328. Many more macros are defined by system header files. Different
  1329. systems and machines define different macros, or give them different
  1330. values. It is useful to test these macros with conditionals to avoid
  1331. using a system feature on a machine where it is not implemented.
  1332. @item
  1333. Macros are a common way of allowing users to customize a program for
  1334. different machines or applications. For example, the macro
  1335. @samp{BUFSIZE} might be defined in a configuration file for your
  1336. program that is included as a header file in each source file. You
  1337. would use @samp{BUFSIZE} in a preprocessor conditional in order to
  1338. generate different code depending on the chosen configuration.
  1339. @item
  1340. Macros can be defined or undefined with @samp{-D} and @samp{-U}
  1341. command switches when you compile the program. You can arrange to
  1342. compile the same source file into two different programs by choosing
  1343. a macro name to specify which program you want, writing conditionals
  1344. to test whether or how this macro is defined, and then controlling
  1345. the state of the macro with compiler command switches.
  1346. @xref{Invocation}.
  1347. @end itemize
  1348. @node #error Command,, Conditionals-Macros, Conditionals
  1349. @subsection The @samp{#error} Command
  1350. @findex #error
  1351. The command @samp{#error} causes the preprocessor to report a fatal
  1352. error. The rest of the line that follows @samp{#error} is used as the
  1353. error message.
  1354. You would use @samp{#error} inside of a conditional that detects a
  1355. combination of parameters which you know the program does not properly
  1356. support. For example, if you know that the program will not run
  1357. properly on a Vax, you might write
  1358. @example
  1359. #ifdef vax
  1360. #error Won't work on Vaxen. See comments at get_last_object.
  1361. #endif
  1362. @end example
  1363. @noindent
  1364. @xref{Nonstandard Predefined}, for why this works.
  1365. If you have several configuration parameters that must be set up by
  1366. the installation in a consistent way, you can use conditionals to detect
  1367. an inconsistency and report it with @samp{#error}. For example,
  1368. @example
  1369. #if HASH_TABLE_SIZE % 2 == 0 || HASH_TABLE_SIZE % 3 == 0 \
  1370. || HASH_TABLE_SIZE % 5 == 0
  1371. #error HASH_TABLE_SIZE should not be divisible by a small prime
  1372. #endif
  1373. @end example
  1374. @node Combining Sources, Other Commands, Conditionals, Top
  1375. @section Combining Source Files
  1376. @cindex line control
  1377. @findex #line
  1378. One of the jobs of the C preprocessor is to inform the C compiler of where
  1379. each line of C code came from: which source file and which line number.
  1380. C code can come from multiple source files if you use @samp{#include};
  1381. both @samp{#include} and the use of conditionals and macros can cause
  1382. the line number of a line in the preprocessor output to be different
  1383. from the line's number in the original source file. You will appreciate
  1384. the value of making both the C compiler (in error messages) and symbolic
  1385. debuggers such as GDB use the line numbers in your source file.
  1386. The C preprocessor builds on this feature by offering a command by which
  1387. you can control the feature explicitly. This is useful when a file for
  1388. input to the C preprocessor is the output from another program such as the
  1389. @code{bison} parser generator, which operates on another file that is the
  1390. true source file. Parts of the output from @code{bison} are generated from
  1391. scratch, other parts come from a standard parser file. The rest are copied
  1392. nearly verbatim from the source file, but their line numbers in the
  1393. @code{bison} output are not the same as their original line numbers.
  1394. Naturally you would like compiler error messages and symbolic debuggers to
  1395. know the original source file and line number of each line in the
  1396. @code{bison} output.
  1397. @code{bison} arranges this by writing @samp{#line} commands into the output
  1398. file. @samp{#line} is a command that specifies the original line number
  1399. and source file name for subsequent input in the current preprocessor input
  1400. file. @samp{#line} has three variants:
  1401. @table @code
  1402. @item #line @var{linenum}
  1403. Here @var{linenum} is a decimal integer constant. This specifies that
  1404. the line number of the following line of input, in its original source file,
  1405. was @var{linenum}.
  1406. @item #line @var{linenum} @var{filename}
  1407. Here @var{linenum} is a decimal integer constant and @var{filename}
  1408. is a string constant. This specifies that the following line of input
  1409. came originally from source file @var{filename} and its line number there
  1410. was @var{linenum}. Keep in mind that @var{filename} is not just a
  1411. file name; it is surrounded by Doublequotes.
  1412. @item #line @var{anything else}
  1413. @var{anything else} is checked for macro calls, which are expanded.
  1414. The result should be a decimal integer constant followed optionally
  1415. by a string constant, as described above.
  1416. @end table
  1417. @samp{#line} commands alter the results of the @samp{__FILE__} and
  1418. @samp{__LINE__} predefined macros from that point on. @xref{Standard
  1419. Predefined}.
  1420. @node Other Commands, Output, Combining Sources, Top
  1421. @section Miscellaneous Preprocessor Commands
  1422. @findex #pragma
  1423. @cindex null command
  1424. This section describes two additional preprocesor commands. They are
  1425. not very useful, but are mentioned for completeness.
  1426. The @dfn{null command} consists of a @samp{#} followed by a Newline, with
  1427. only whitespace (including comments) in between. A null command is
  1428. understood as a preprocessor command but has no effect on the preprocessor
  1429. output. The primary significance of the existence of the null command is
  1430. that an input line consisting of just a @samp{#} will produce no output,
  1431. rather than a line of output containing just a @samp{#}. Supposedly
  1432. some old C programs contain such lines.
  1433. The @samp{#pragma} command is specified in the ANSI standard to have an
  1434. arbitrary implementation-defined effect. In the GNU C preprocessor,
  1435. @samp{#pragma} first attempts to run the game @code{rogue}; if that fails,
  1436. it tries to run the game @code{hack}; if that fails, it tries to run
  1437. GNU Emacs displaying the Tower of Hanoi; if that fails, it reports a
  1438. fatal error. In any case, preprocessing does not continue.
  1439. @node Output, Invocation, Other Commands, Top
  1440. @section C Preprocessor Output
  1441. @cindex output format
  1442. The output from the C preprocessor looks much like the input, except
  1443. that all preprocessor command lines have been replaced with blank lines
  1444. and all comments with spaces. Whitespace within a line is not altered;
  1445. however, a space is inserted after the expansions of most macro calls.
  1446. Source file name and line number information is conveyed by lines of
  1447. the form
  1448. @example
  1449. # @var{linenum} @var{filename}
  1450. @end example
  1451. @noindent
  1452. which are inserted as needed into the middle of the input (but never within
  1453. a string or character constant). Such a line means that the following line
  1454. originated in file @var{filename} at line @var{linenum}.
  1455. @node Invocation,, Output, Top
  1456. @section Invoking the C Preprocessor
  1457. Most often when you use the C preprocessor you will not have to invoke it
  1458. explicitly: the C compiler will do so automatically. However, the
  1459. preprocessor is sometimes useful individually.
  1460. The C preprocessor expects two file names as arguments, @var{infile} and
  1461. @var{outfile}. The preprocessor reads @var{infile} together with any other
  1462. files it specifies with @samp{#include}. All the output generated by the
  1463. combined input files is written in @var{outfile}.
  1464. Either @var{infile} or @var{outfile} may be @samp{-}, which as @var{infile}
  1465. means to read from standard input and as @var{outfile} means to write to
  1466. standard output. Also, if @var{outfile} or both file names are omitted,
  1467. the standard output and standard input are used for the omitted file names.
  1468. @cindex switches
  1469. Here is a table of command switches accepted by the C preprocessor. Most
  1470. of them can also be given when compiling a C program; they are passed along
  1471. automatically to the preprocessor when it is invoked by the compiler.
  1472. @table @samp
  1473. @item -P
  1474. @findex -P
  1475. Inhibit generation of @samp{#}-lines with line-number information in
  1476. the output from the preprocessor (@pxref{Output}). This might be
  1477. useful when running the preprocessor on something that is not C code
  1478. and will be sent to a program which might be confused by the
  1479. @samp{#}-lines
  1480. @item -C
  1481. @findex -C
  1482. Do not discard comments: pass them through to the output file.
  1483. Comments appearing in arguments of a macro call will be copied to the
  1484. output before the expansion of the macro call.
  1485. @item -T
  1486. @findex -T
  1487. Process ANSI standard trigraph sequences. These are three-character
  1488. sequences, all starting with @samp{??}, that are defined by ANSI C to
  1489. stand for single characters. For example, @samp{??/} stands for
  1490. @samp{\}, so @samp{'??/n'} is a character constant for Newline.
  1491. Strictly speaking, the GNU C preprocessor does not support all
  1492. programs in ANSI Standard C unless @samp{-T} is used, but you if you
  1493. ever notice the difference it will be with relief.
  1494. You don't want to know any more about trigraphs.
  1495. @item -pedantic
  1496. @findex -pedantic
  1497. Issue warnings required by the ANSI C standard in certain cases such
  1498. as when text other than a comment follows @samp{#else} or @samp{#endif}.
  1499. @item -I @var{directory}
  1500. @findex -I
  1501. Add the directory @var{directory} to the end of the list of
  1502. directories to be searched for user header files (@pxref{Include
  1503. Syntax}).
  1504. @item -D @var{name}
  1505. @findex -D
  1506. Predefine @var{name} as a macro, with definition @samp{1}.
  1507. @item -D @var{name}=@var{definition}
  1508. Predefine @var{name} as a macro, with definition @var{definition}.
  1509. There are no restrictions on the contents of @var{definition}, but if
  1510. you are invoking the preprocessor from a shell or shell-like program
  1511. you may need to use the shell's quoting syntax to protect characters
  1512. such as spaces that have a meaning in the shell syntax.
  1513. @item -U @var{name}
  1514. @findex -U
  1515. Do not predefine @var{name}. If both @samp{-U} and @samp{-D} are
  1516. specified for one name, the @samp{-U} beats the @samp{-D} and the name
  1517. is not predefined.
  1518. @item -undef
  1519. @findex -undef
  1520. Do not predefine any nonstandard macros.
  1521. @item -d
  1522. @findex -d
  1523. Instead of outputting the result of preprocessing, output a list of
  1524. @samp{#define} commands for all the macros defined during the
  1525. execution of the preprocessor.
  1526. @item -i @var{file}
  1527. @findex -i
  1528. Process @var{file} as input, discarding the resulting output, before
  1529. processing the regular input file. Because the output generated from
  1530. @var{file} is discarded, the only effect of @samp{-i @var{file}} is to
  1531. make the macros defined in @var{file} available for use in the main
  1532. input.
  1533. @end table
  1534. @node Concept Index, Index, Invocation, Top
  1535. @unnumbered Concept Index
  1536. @printindex cp
  1537. @node Index,, Concept Index, Top
  1538. @unnumbered Index of Commands, Macros and Switches
  1539. @printindex fn
  1540. @contents
  1541. @bye