<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Copyright (C) 1987-2015 Free Software Foundation, Inc.

Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation.  A copy of
the license is included in the
section entitled "GNU Free Documentation License".

This manual contains no Invariant Sections.  The Front-Cover Texts are
(a) (see below), and the Back-Cover Texts are (b) (see below).

(a) The FSF's Front-Cover Text is:

A GNU Manual

(b) The FSF's Back-Cover Text is:

You have freedom to copy and modify this GNU Manual, like GNU
     software.  Copies published by the Free Software Foundation raise
     funds for GNU development. -->
<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
<head>
<title>The C Preprocessor: Duplication of Side Effects</title>

<meta name="description" content="The C Preprocessor: Duplication of Side Effects">
<meta name="keywords" content="The C Preprocessor: Duplication of Side Effects">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="index.html#Top" rel="start" title="Top">
<link href="Index-of-Directives.html#Index-of-Directives" rel="index" title="Index of Directives">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="Macro-Pitfalls.html#Macro-Pitfalls" rel="up" title="Macro Pitfalls">
<link href="Self_002dReferential-Macros.html#Self_002dReferential-Macros" rel="next" title="Self-Referential Macros">
<link href="Swallowing-the-Semicolon.html#Swallowing-the-Semicolon" rel="prev" title="Swallowing the Semicolon">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.indentedblock {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
div.smalldisplay {margin-left: 3.2em}
div.smallexample {margin-left: 3.2em}
div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
div.smalllisp {margin-left: 3.2em}
kbd {font-style:oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
pre.smalldisplay {font-family: inherit; font-size: smaller}
pre.smallexample {font-size: smaller}
pre.smallformat {font-family: inherit; font-size: smaller}
pre.smalllisp {font-size: smaller}
span.nocodebreak {white-space:nowrap}
span.nolinebreak {white-space:nowrap}
span.roman {font-family:serif; font-weight:normal}
span.sansserif {font-family:sans-serif; font-weight:normal}
ul.no-bullet {list-style: none}
-->
</style>


</head>

<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
<a name="Duplication-of-Side-Effects"></a>
<div class="header">
<p>
Next: <a href="Self_002dReferential-Macros.html#Self_002dReferential-Macros" accesskey="n" rel="next">Self-Referential Macros</a>, Previous: <a href="Swallowing-the-Semicolon.html#Swallowing-the-Semicolon" accesskey="p" rel="prev">Swallowing the Semicolon</a>, Up: <a href="Macro-Pitfalls.html#Macro-Pitfalls" accesskey="u" rel="up">Macro Pitfalls</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index-of-Directives.html#Index-of-Directives" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<a name="Duplication-of-Side-Effects-1"></a>
<h4 class="subsection">3.10.4 Duplication of Side Effects</h4>

<a name="index-side-effects-_0028in-macro-arguments_0029"></a>
<a name="index-unsafe-macros"></a>
<p>Many C programs define a macro <code>min</code>, for &ldquo;minimum&rdquo;, like this:
</p>
<div class="smallexample">
<pre class="smallexample">#define min(X, Y)  ((X) &lt; (Y) ? (X) : (Y))
</pre></div>

<p>When you use this macro with an argument containing a side effect,
as shown here,
</p>
<div class="smallexample">
<pre class="smallexample">next = min (x + y, foo (z));
</pre></div>

<p>it expands as follows:
</p>
<div class="smallexample">
<pre class="smallexample">next = ((x + y) &lt; (foo (z)) ? (x + y) : (foo (z)));
</pre></div>

<p>where <code>x + y</code> has been substituted for <code>X</code> and <code>foo (z)</code>
for <code>Y</code>.
</p>
<p>The function <code>foo</code> is used only once in the statement as it appears
in the program, but the expression <code>foo (z)</code> has been substituted
twice into the macro expansion.  As a result, <code>foo</code> might be called
two times when the statement is executed.  If it has side effects or if
it takes a long time to compute, the results might not be what you
intended.  We say that <code>min</code> is an <em>unsafe</em> macro.
</p>
<p>The best solution to this problem is to define <code>min</code> in a way that
computes the value of <code>foo (z)</code> only once.  The C language offers
no standard way to do this, but it can be done with GNU extensions as
follows:
</p>
<div class="smallexample">
<pre class="smallexample">#define min(X, Y)                \
({ typeof (X) x_ = (X);          \
   typeof (Y) y_ = (Y);          \
   (x_ &lt; y_) ? x_ : y_; })
</pre></div>

<p>The &lsquo;<samp>({ &hellip; })</samp>&rsquo; notation produces a compound statement that
acts as an expression.  Its value is the value of its last statement.
This permits us to define local variables and assign each argument to
one.  The local variables have underscores after their names to reduce
the risk of conflict with an identifier of wider scope (it is impossible
to avoid this entirely).  Now each argument is evaluated exactly once.
</p>
<p>If you do not wish to use GNU C extensions, the only solution is to be
careful when <em>using</em> the macro <code>min</code>.  For example, you can
calculate the value of <code>foo (z)</code>, save it in a variable, and use
that variable in <code>min</code>:
</p>
<div class="smallexample">
<pre class="smallexample">#define min(X, Y)  ((X) &lt; (Y) ? (X) : (Y))
&hellip;
{
  int tem = foo (z);
  next = min (x + y, tem);
}
</pre></div>

<p>(where we assume that <code>foo</code> returns type <code>int</code>).
</p>
<hr>
<div class="header">
<p>
Next: <a href="Self_002dReferential-Macros.html#Self_002dReferential-Macros" accesskey="n" rel="next">Self-Referential Macros</a>, Previous: <a href="Swallowing-the-Semicolon.html#Swallowing-the-Semicolon" accesskey="p" rel="prev">Swallowing the Semicolon</a>, Up: <a href="Macro-Pitfalls.html#Macro-Pitfalls" accesskey="u" rel="up">Macro Pitfalls</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index-of-Directives.html#Index-of-Directives" title="Index" rel="index">Index</a>]</p>
</div>



</body>
</html>
