blob: 08515685d307a38caa47a1d4419e11c5b2d4c80c [file] [log] [blame]
<html lang="en">
<head>
<title>Deleted Code - The C Preprocessor</title>
<meta http-equiv="Content-Type" content="text/html">
<meta name="description" content="The C Preprocessor">
<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Conditionals.html#Conditionals" title="Conditionals">
<link rel="prev" href="Conditional-Syntax.html#Conditional-Syntax" title="Conditional Syntax">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
<!--
Copyright (C) 1987, 1989, 1991, 1992, 1993, 1994, 1995, 1996,
1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
2008, 2009, 2010
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.2 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.
-->
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css"><!--
pre.display { font-family:inherit }
pre.format { font-family:inherit }
pre.smalldisplay { font-family:inherit; font-size:smaller }
pre.smallformat { font-family:inherit; font-size:smaller }
pre.smallexample { font-size:smaller }
pre.smalllisp { font-size:smaller }
span.sc { font-variant:small-caps }
span.roman { font-family:serif; font-weight:normal; }
span.sansserif { font-family:sans-serif; font-weight:normal; }
--></style>
<link rel="stylesheet" type="text/css" href="../cs.css">
</head>
<body>
<div class="node">
<a name="Deleted-Code"></a>
<p>
Previous:&nbsp;<a rel="previous" accesskey="p" href="Conditional-Syntax.html#Conditional-Syntax">Conditional Syntax</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="Conditionals.html#Conditionals">Conditionals</a>
<hr>
</div>
<h3 class="section">4.3 Deleted Code</h3>
<p><a name="index-commenting-out-code-92"></a>
If you replace or delete a part of the program but want to keep the old
code around for future reference, you often cannot simply comment it
out. Block comments do not nest, so the first comment inside the old
code will end the commenting-out. The probable result is a flood of
syntax errors.
<p>One way to avoid this problem is to use an always-false conditional
instead. For instance, put <code>#if 0</code> before the deleted code and
<code>#endif</code> after it. This works even if the code being turned
off contains conditionals, but they must be entire conditionals
(balanced &lsquo;<samp><span class="samp">#if</span></samp>&rsquo; and &lsquo;<samp><span class="samp">#endif</span></samp>&rsquo;).
<p>Some people use <code>#ifdef notdef</code> instead. This is risky, because
<code>notdef</code> might be accidentally defined as a macro, and then the
conditional would succeed. <code>#if 0</code> can be counted on to fail.
<p>Do not use <code>#if 0</code> for comments which are not C code. Use a real
comment, instead. The interior of <code>#if 0</code> must consist of complete
tokens; in particular, single-quote characters must balance. Comments
often contain unbalanced single-quote characters (known in English as
apostrophes). These confuse <code>#if 0</code>. They don't confuse
&lsquo;<samp><span class="samp">/*</span></samp>&rsquo;.
</body></html>