source: public/doc/gnu-c/Conditionals.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: 5.5 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>Conditionals (GNU C Language Manual)</title>
23
24<meta name="description" content="Conditionals (GNU C Language Manual)">
25<meta name="keywords" content="Conditionals (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="Preprocessing.html" rel="up" title="Preprocessing">
33<link href="Conditional-Uses.html" rel="next" title="Conditional Uses">
34<link href="Argument-Prescan.html" rel="prev" title="Argument Prescan">
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="Conditionals"></span><div class="header">
59<p>
60Next: <a href="Diagnostics.html" accesskey="n" rel="next">Diagnostics</a>, Previous: <a href="Macros.html" accesskey="p" rel="prev">Macros</a>, Up: <a href="Preprocessing.html" accesskey="u" rel="up">Preprocessing</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="Conditionals-1"></span><h3 class="section">26.6 Conditionals</h3>
64<span id="index-conditionals"></span>
65
66<p>A <em>conditional</em> is a preprocessing directive that controls whether
67or not to include a chunk of code in the final token stream that is
68compiled. Preprocessing conditionals can test arithmetic expressions,
69or whether a name is defined as a macro, or both together using the
70special <code>defined</code> operator.
71</p>
72<p>A preprocessing conditional in C resembles in some ways an <code>if</code>
73statement in C, but it is important to understand the difference between
74them. The condition in an <code>if</code> statement is tested during the
75execution of your program. Its purpose is to allow your program to
76behave differently from run to run, depending on the data it is
77operating on. The condition in a preprocessing conditional directive is
78tested when your program is compiled. Its purpose is to allow different
79code to be included in the program depending on the situation at the
80time of compilation.
81</p>
82<p>Sometimes this distinction makes no practical difference. GCC and
83other modern compilers often
84do test <code>if</code> statements when a program is compiled, if their
85conditions are known not to vary at run time, and eliminate code that
86can never be executed. If you can count on your compiler to do this,
87you may find that your program is more readable if you use <code>if</code>
88statements with constant conditions (perhaps determined by macros). Of
89course, you can only use this to exclude code, not type definitions or
90other preprocessing directives, and you can only do it if the file
91remains syntactically valid when that code is not used.
92</p>
93<table class="menu" border="0" cellspacing="0">
94<tr><td align="left" valign="top">&bull; <a href="Conditional-Uses.html" accesskey="1">Conditional Uses</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
95</td></tr>
96<tr><td align="left" valign="top">&bull; <a href="Conditional-Syntax.html" accesskey="2">Conditional Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
97</td></tr>
98<tr><td align="left" valign="top">&bull; <a href="Deleted-Code.html" accesskey="3">Deleted Code</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
99</td></tr>
100</table>
101
102<hr>
103<div class="header">
104<p>
105Next: <a href="Diagnostics.html" accesskey="n" rel="next">Diagnostics</a>, Previous: <a href="Macros.html" accesskey="p" rel="prev">Macros</a>, Up: <a href="Preprocessing.html" accesskey="u" rel="up">Preprocessing</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>
106</div>
107
108
109
110</body>
111</html>
Note: See TracBrowser for help on using the repository browser.