source: public/doc/gnu-c/Misnesting.html@ 02598c2

Last change on this file since 02598c2 was 02598c2, checked in by Mikhail Kirillov <w96k@…>, on Oct 6, 2022 at 12:36:29 PM

Add gnu-c

  • Property mode set to 100644
File size: 4.0 KB
Line 
1<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2<html>
3<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
4
5(The work of Trevis Rothwell and Nelson Beebe has been assigned or
6licensed to the FSF.)
7
8Permission is granted to copy, distribute and/or modify this document
9under the terms of the GNU Free Documentation License, Version 1.3 or
10any later version published by the Free Software Foundation; with the
11Invariant Sections being "GNU General Public License," with the
12Front-Cover Texts being "A GNU Manual," and with the Back-Cover
13Texts as in (a) below. A copy of the license is included in the
14section entitled "GNU Free Documentation License."
15
16(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
17modify this GNU manual. Buying copies from the FSF supports it in
18developing GNU and promoting software freedom." -->
19<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
20<head>
21<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
22<title>Misnesting (GNU C Language Manual)</title>
23
24<meta name="description" content="Misnesting (GNU C Language Manual)">
25<meta name="keywords" content="Misnesting (GNU C Language Manual)">
26<meta name="resource-type" content="document">
27<meta name="distribution" content="global">
28<meta name="Generator" content="makeinfo">
29<link href="index.html" rel="start" title="Top">
30<link href="Symbol-Index.html" rel="index" title="Symbol Index">
31<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
32<link href="Macro-Pitfalls.html" rel="up" title="Macro Pitfalls">
33<link href="Operator-Precedence-Problems.html" rel="next" title="Operator Precedence Problems">
34<link href="Macro-Pitfalls.html" rel="prev" title="Macro Pitfalls">
35<style type="text/css">
36<!--
37a.summary-letter {text-decoration: none}
38blockquote.indentedblock {margin-right: 0em}
39div.display {margin-left: 3.2em}
40div.example {margin-left: 3.2em}
41div.lisp {margin-left: 3.2em}
42kbd {font-style: oblique}
43pre.display {font-family: inherit}
44pre.format {font-family: inherit}
45pre.menu-comment {font-family: serif}
46pre.menu-preformatted {font-family: serif}
47span.nolinebreak {white-space: nowrap}
48span.roman {font-family: initial; font-weight: normal}
49span.sansserif {font-family: sans-serif; font-weight: normal}
50ul.no-bullet {list-style: none}
51-->
52</style>
53
54
55</head>
56
57<body lang="en">
58<span id="Misnesting"></span><div class="header">
59<p>
60Next: <a href="Operator-Precedence-Problems.html" accesskey="n" rel="next">Operator Precedence Problems</a>, Up: <a href="Macro-Pitfalls.html" accesskey="u" rel="up">Macro Pitfalls</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Index.html" title="Index" rel="index">Index</a>]</p>
61</div>
62<hr>
63<span id="Misnesting-1"></span><h4 class="subsubsection">26.5.10.1 Misnesting</h4>
64
65<p>When a macro is called with arguments, the arguments are substituted
66into the macro body and the result is checked, together with the rest of
67the input file, for more macro calls. It is possible to piece together
68a macro call coming partially from the macro body and partially from the
69arguments. For example,
70</p>
71<div class="example">
72<pre class="example">#define twice(x) (2*(x))
73#define call_with_1(x) x(1)
74call_with_1 (twice)
75 &rarr; twice(1)
76 &rarr; (2*(1))
77</pre></div>
78
79<p>Macro definitions do not have to have balanced parentheses. By writing
80an unbalanced open parenthesis in a macro body, it is possible to create
81a macro call that begins inside the macro body but ends outside of it.
82For example,
83</p>
84<div class="example">
85<pre class="example">#define strange(file) fprintf (file, &quot;%s %d&quot;,
86/* <span class="roman">&hellip;</span> */
87strange(stderr) p, 35)
88 &rarr; fprintf (stderr, &quot;%s %d&quot;, p, 35)
89</pre></div>
90
91<p>The ability to piece together a macro call can be useful, but the use of
92unbalanced open parentheses in a macro body is just confusing, and
93should be avoided.
94</p>
95
96
97
98</body>
99</html>
Note: See TracBrowser for help on using the repository browser.