Index: public/doc/gnu-c/Accessing-Array-Elements.html
===================================================================
--- public/doc/gnu-c/Accessing-Array-Elements.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Accessing-Array-Elements.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,119 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Accessing Array Elements (GNU C Language Manual)</title>
+
+<meta name="description" content="Accessing Array Elements (GNU C Language Manual)">
+<meta name="keywords" content="Accessing Array Elements (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Arrays.html" rel="up" title="Arrays">
+<link href="Declaring-an-Array.html" rel="next" title="Declaring an Array">
+<link href="Arrays.html" rel="prev" title="Arrays">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Accessing-Array-Elements"></span><div class="header">
+<p>
+Next: <a href="Declaring-an-Array.html" accesskey="n" rel="next">Declaring an Array</a>, Up: <a href="Arrays.html" accesskey="u" rel="up">Arrays</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>
+</div>
+<hr>
+<span id="Accessing-Array-Elements-1"></span><h3 class="section">16.1 Accessing Array Elements</h3>
+<span id="index-accessing-array-elements"></span>
+<span id="index-array-elements_002c-accessing"></span>
+
+<p>If the variable <code>a</code> is an array, the <var>n</var>th element of
+<code>a</code> is <code>a[<var>n</var>]</code>.  You can use that expression to access
+an element&rsquo;s value or to assign to it:
+</p>
+<div class="example">
+<pre class="example">x = a[5];
+a[6] = 1;
+</pre></div>
+
+<p>Since the variable <code>a</code> is an lvalue, <code>a[<var>n</var>]</code> is also an
+lvalue.
+</p>
+<p>The lowest valid index in an array is 0, <em>not</em> 1, and the highest
+valid index is one less than the number of elements.
+</p>
+<p>The C language does not check whether array indices are in bounds, so
+if the code uses an out-of-range index, it will access memory outside the
+array.
+</p>
+<p><strong>Warning:</strong> Using only valid index values in C is the
+programmer&rsquo;s responsibility.
+</p>
+<p>Array indexing in C is not a primitive operation: it is defined in
+terms of pointer arithmetic and dereferencing.  Now that we know
+<em>what</em> <code>a[i]</code> does, we can ask <em>how</em> <code>a[i]</code> does
+its job.
+</p>
+<p>In C, <code><var>x</var>[<var>y</var>]</code> is an abbreviation for
+<code>*(<var>x</var>+<var>y</var>)</code>.  Thus, <code>a[i]</code> really means
+<code>*(a+i)</code>.  See <a href="Pointers-and-Arrays.html">Pointers and Arrays</a>.
+</p>
+<p>When an expression with array type (such as <code>a</code>) appears as part
+of a larger C expression, it is converted automatically to a pointer
+to element zero of that array.  For instance, <code>a</code> in an
+expression is equivalent to <code>&amp;a[0]</code>.  Thus, <code>*(a+i)</code> is
+computed as <code>*(&amp;a[0]+i)</code>.
+</p>
+<p>Now we can analyze how that expression gives us the desired element of
+the array.  It makes a pointer to element 0 of <code>a</code>, advances it
+by the value of <code>i</code>, and dereferences that pointer.
+</p>
+<p>Another equivalent way to write the expression is <code>(&amp;a[0])[i]</code>.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Declaring-an-Array.html" accesskey="n" rel="next">Declaring an Array</a>, Up: <a href="Arrays.html" accesskey="u" rel="up">Arrays</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Address-of-Data.html
===================================================================
--- public/doc/gnu-c/Address-of-Data.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Address-of-Data.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,90 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Address of Data (GNU C Language Manual)</title>
+
+<meta name="description" content="Address of Data (GNU C Language Manual)">
+<meta name="keywords" content="Address of Data (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Pointers.html" rel="up" title="Pointers">
+<link href="Pointer-Types.html" rel="next" title="Pointer Types">
+<link href="Pointers.html" rel="prev" title="Pointers">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Address-of-Data"></span><div class="header">
+<p>
+Next: <a href="Pointer-Types.html" accesskey="n" rel="next">Pointer Types</a>, Up: <a href="Pointers.html" accesskey="u" rel="up">Pointers</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>
+</div>
+<hr>
+<span id="Address-of-Data-1"></span><h3 class="section">14.1 Address of Data</h3>
+
+<span id="index-address_002dof-operator"></span>
+<p>The most basic way to make a pointer is with the &ldquo;address-of&rdquo;
+operator, &lsquo;<samp>&amp;</samp>&rsquo;.  Let&rsquo;s suppose we have these variables available:
+</p>
+<div class="example">
+<pre class="example">int i;
+double a[5];
+</pre></div>
+
+<p>Now, <code>&amp;i</code> gives the address of the variable <code>i</code>&mdash;a pointer
+value that points to <code>i</code>&rsquo;s location&mdash;and <code>&amp;a[3]</code> gives the
+address of the element 3 of <code>a</code>.  (It is actually the fourth
+element in the array, since the first element has index 0.)
+</p>
+<p>The address-of operator is unusual because it operates on a place to
+store a value (an lvalue, see <a href="Lvalues.html">Lvalues</a>), not on the value currently
+stored there.  (The left argument of a simple assignment is unusual in
+the same way.)  You can use it on any lvalue except a bit field
+(see <a href="Bit-Fields.html">Bit Fields</a>) or a constructor (see <a href="Structure-Constructors.html">Structure Constructors</a>).
+</p>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Advanced-Definitions.html
===================================================================
--- public/doc/gnu-c/Advanced-Definitions.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Advanced-Definitions.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,85 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Advanced Definitions (GNU C Language Manual)</title>
+
+<meta name="description" content="Advanced Definitions (GNU C Language Manual)">
+<meta name="keywords" content="Advanced Definitions (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Functions.html" rel="up" title="Functions">
+<link href="Variable_002dLength-Array-Parameters.html" rel="next" title="Variable-Length Array Parameters">
+<link href="Environment-Variables.html" rel="prev" title="Environment Variables">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Advanced-Definitions"></span><div class="header">
+<p>
+Next: <a href="Obsolete-Definitions.html" accesskey="n" rel="next">Obsolete Definitions</a>, Previous: <a href="The-main-Function.html" accesskey="p" rel="prev">The main Function</a>, Up: <a href="Functions.html" accesskey="u" rel="up">Functions</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>
+</div>
+<hr>
+<span id="Advanced-Function-Features"></span><h3 class="section">22.7 Advanced Function Features</h3>
+
+<p>This section describes some advanced or obscure features for GNU C
+function definitions.  If you are just learning C, you can skip the
+rest of this chapter.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Variable_002dLength-Array-Parameters.html" accesskey="1">Variable-Length Array Parameters</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Functions that accept arrays
+                                       of variable length.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Variable-Number-of-Arguments.html" accesskey="2">Variable Number of Arguments</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Variadic functions.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Nested-Functions.html" accesskey="3">Nested Functions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Defining functions within functions.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Inline-Function-Definitions.html" accesskey="4">Inline Function Definitions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">A function call optimization technique.
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Aliasing-Alignment.html
===================================================================
--- public/doc/gnu-c/Aliasing-Alignment.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Aliasing-Alignment.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,91 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Aliasing Alignment (GNU C Language Manual)</title>
+
+<meta name="description" content="Aliasing Alignment (GNU C Language Manual)">
+<meta name="keywords" content="Aliasing Alignment (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Aliasing.html" rel="up" title="Aliasing">
+<link href="Aliasing-Length.html" rel="next" title="Aliasing Length">
+<link href="Aliasing.html" rel="prev" title="Aliasing">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Aliasing-Alignment"></span><div class="header">
+<p>
+Next: <a href="Aliasing-Length.html" accesskey="n" rel="next">Aliasing Length</a>, Up: <a href="Aliasing.html" accesskey="u" rel="up">Aliasing</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>
+</div>
+<hr>
+<span id="Aliasing-and-Alignment"></span><h3 class="appendixsection">B.1 Aliasing and Alignment</h3>
+
+<p>In order for a type-converted pointer to be valid, it must have the
+alignment that the new pointer type requires.  For instance, on most
+computers, <code>int</code> has alignment 4; the address of an <code>int</code>
+must be a multiple of 4.  However, <code>char</code> has alignment 1, so the
+address of a <code>char</code> is usually not a multiple of 4.  Taking the
+address of such a <code>char</code> and casting it to <code>int *</code> probably
+results in an invalid pointer.  Trying to dereference it may cause a
+<code>SIGBUS</code> signal, depending on the platform in use (see <a href="Signals.html">Signals</a>).
+</p>
+<div class="example">
+<pre class="example">foo ()
+{
+  char i[4];
+  int *p = (int *) &amp;i[1]; /* <span class="roman">Misaligned pointer!</span> */
+  return *p;              /* <span class="roman">Crash!</span> */
+}
+</pre></div>
+
+<p>This requirement is never a problem when casting the return value
+of <code>malloc</code> because that function always returns a pointer
+with as much alignment as any type can require.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Aliasing-Length.html
===================================================================
--- public/doc/gnu-c/Aliasing-Length.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Aliasing-Length.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,96 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Aliasing Length (GNU C Language Manual)</title>
+
+<meta name="description" content="Aliasing Length (GNU C Language Manual)">
+<meta name="keywords" content="Aliasing Length (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Aliasing.html" rel="up" title="Aliasing">
+<link href="Aliasing-Type-Rules.html" rel="next" title="Aliasing Type Rules">
+<link href="Aliasing-Alignment.html" rel="prev" title="Aliasing Alignment">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Aliasing-Length"></span><div class="header">
+<p>
+Next: <a href="Aliasing-Type-Rules.html" accesskey="n" rel="next">Aliasing Type Rules</a>, Previous: <a href="Aliasing-Alignment.html" accesskey="p" rel="prev">Aliasing Alignment</a>, Up: <a href="Aliasing.html" accesskey="u" rel="up">Aliasing</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>
+</div>
+<hr>
+<span id="Aliasing-and-Length"></span><h3 class="appendixsection">B.2 Aliasing and Length</h3>
+
+<p>When converting a pointer to a different pointer type, make sure the
+object it really points to is at least as long as the target of the
+converted pointer.  For instance, suppose <code>p</code> has type <code>int
+*</code> and it&rsquo;s cast as follows:
+</p>
+<div class="example">
+<pre class="example">int *p;
+
+struct
+  {
+    double d, e, f;
+  } foo;
+
+struct foo *q = (struct foo *)p;
+
+q-&gt;f = 5.14159;
+</pre></div>
+
+<p>the value <code>q-&gt;f</code> will run past the end of the <code>int</code> that
+<code>p</code> points to.  If <code>p</code> was initialized to the start of an
+array of type <code>int[6]</code>, the object is long enough for three
+<code>double</code>s.  But if <code>p</code> points to something shorter,
+<code>q-&gt;f</code> will run on beyond the end of that, overlaying some other
+data.  Storing that will garble that other data.  Or it could extend
+past the end of memory space and cause a <code>SIGSEGV</code> signal
+(see <a href="Signals.html">Signals</a>).
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Aliasing-Type-Rules.html
===================================================================
--- public/doc/gnu-c/Aliasing-Type-Rules.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Aliasing-Type-Rules.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,174 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Aliasing Type Rules (GNU C Language Manual)</title>
+
+<meta name="description" content="Aliasing Type Rules (GNU C Language Manual)">
+<meta name="keywords" content="Aliasing Type Rules (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Aliasing.html" rel="up" title="Aliasing">
+<link href="Digraphs.html" rel="next" title="Digraphs">
+<link href="Aliasing-Length.html" rel="prev" title="Aliasing Length">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Aliasing-Type-Rules"></span><div class="header">
+<p>
+Previous: <a href="Aliasing-Length.html" accesskey="p" rel="prev">Aliasing Length</a>, Up: <a href="Aliasing.html" accesskey="u" rel="up">Aliasing</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>
+</div>
+<hr>
+<span id="Type-Rules-for-Aliasing"></span><h3 class="appendixsection">B.3 Type Rules for Aliasing</h3>
+
+<p>C code that converts a pointer to a different pointer type can use the
+pointers to access the same memory locations with two different data
+types.  If the same address is accessed with different types in a
+single control thread, optimization can make the code do surprising
+things (in effect, make it malfunction).
+</p>
+<p>Here&rsquo;s a concrete example where aliasing that can change the code&rsquo;s
+behavior when it is optimized.  We assume that <code>float</code> is 4 bytes
+long, like <code>int</code>, and so is every pointer.  Thus, the structures
+<code>struct a</code> and <code>struct b</code> are both 8 bytes.
+</p>
+<div class="example">
+<pre class="example">#include &lt;stdio.h&gt;
+struct a { int size; char *data; };
+struct b { float size; char *data; };
+
+void sub (struct a *p, struct b *q)
+{
+  int x;
+  p-&gt;size = 0;
+  q-&gt;size = 1;
+  x = p-&gt;size;
+  printf(&quot;x       =%d\n&quot;, x);
+  printf(&quot;p-&gt;size =%d\n&quot;, (int)p-&gt;size);
+  printf(&quot;q-&gt;size =%d\n&quot;, (int)q-&gt;size);
+}
+
+int main(void)
+{
+  struct a foo;
+  struct a *p = &amp;foo;
+  struct b *q = (struct b *) &amp;foo;
+
+  sub (p, q);
+}
+</pre></div>
+
+<p>This code works as intended when compiled without optimization.  All
+the operations are carried out sequentially as written.  The code
+sets <code>x</code> to <code>p-&gt;size</code>, but what it actually gets is the
+bits of the floating point number 1, as type <code>int</code>.
+</p>
+<p>However, when optimizing, the compiler is allowed to assume
+(mistakenly, here) that <code>q</code> does not point to the same storage as
+<code>p</code>, because their data types are not allowed to alias.
+</p>
+<p>From this assumption, the compiler can deduce (falsely, here) that the
+assignment into <code>q-&gt;size</code> has no effect on the value of
+<code>p-&gt;size</code>, which must therefore still be 0.  Thus, <code>x</code> will
+be set to 0.
+</p>
+<p>GNU C, following the C standard, <em>defines</em> this optimization as
+legitimate.  Code that misbehaves when optimized following these rules
+is, by definition, incorrect C code.
+</p>
+<p>The rules for storage aliasing in C are based on the two data types:
+the type of the object, and the type it is accessed through.  The
+rules permit accessing part of a storage object of type <var>t</var> using
+only these types:
+</p>
+<ul>
+<li> <var>t</var>.
+
+</li><li> A type compatible with <var>t</var>.  See <a href="Compatible-Types.html">Compatible Types</a>.
+
+</li><li> A signed or unsigned version of one of the above.
+
+</li><li> A qualifed version of one of the above.
+See <a href="Type-Qualifiers.html">Type Qualifiers</a>.
+
+</li><li> An array, structure (see <a href="Structures.html">Structures</a>), or union type
+(<code>Unions</code>) that contains one of the above, either directly as a
+field or through multiple levels of fields.  If <var>t</var> is
+<code>double</code>, this would include <code>struct s { union { double
+d[2]; int i[4]; } u; int i; };</code> because there&rsquo;s a <code>double</code>
+inside it somewhere.
+
+</li><li> A character type.                                                            
+</li></ul>
+
+<p>What do these rules say about the example in this subsection?
+</p>
+<p>For <code>foo.size</code> (equivalently, <code>a-&gt;size</code>), <var>t</var> is
+<code>int</code>.  The type <code>float</code> is not allowed as an aliasing type
+by those rules, so <code>b-&gt;size</code> is not supposed to alias with
+elements of <code>j</code>.  Based on that assumption, GNU C makes a
+permitted optimization that was not, in this case, consistent with
+what the programmer intended the program to do.
+</p>
+<p>Whether GCC actually performs type-based aliasing analysis depends on
+the details of the code.  GCC has other ways to determine (in some cases)
+whether objects alias, and if it gets a reliable answer that way, it won&rsquo;t
+fall back on type-based heuristics.
+</p>
+<p>The importance of knowing the type-based aliasing rules is not so as
+to ensure that the optimization is done where it would be safe, but so
+as to ensure it is <em>not</em> done in a way that would break the
+program.  You can turn off type-based aliasing analysis by giving GCC
+the option <samp>-fno-strict-aliasing</samp>.
+</p>
+<hr>
+<div class="header">
+<p>
+Previous: <a href="Aliasing-Length.html" accesskey="p" rel="prev">Aliasing Length</a>, Up: <a href="Aliasing.html" accesskey="u" rel="up">Aliasing</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Aliasing.html
===================================================================
--- public/doc/gnu-c/Aliasing.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Aliasing.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,108 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Aliasing (GNU C Language Manual)</title>
+
+<meta name="description" content="Aliasing (GNU C Language Manual)">
+<meta name="keywords" content="Aliasing (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html" rel="up" title="Top">
+<link href="Aliasing-Alignment.html" rel="next" title="Aliasing Alignment">
+<link href="Type-Alignment.html" rel="prev" title="Type Alignment">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Aliasing"></span><div class="header">
+<p>
+Next: <a href="Digraphs.html" accesskey="n" rel="next">Digraphs</a>, Previous: <a href="Type-Alignment.html" accesskey="p" rel="prev">Type Alignment</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</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>
+</div>
+<hr>
+<span id="Aliasing-1"></span><h2 class="appendix">Appendix B Aliasing</h2>
+<span id="index-aliasing-_0028of-storage_0029"></span>
+<span id="index-pointer-type-conversion"></span>
+<span id="index-type-conversion_002c-pointer"></span>
+
+<p>We have already presented examples of casting a <code>void *</code> pointer
+to another pointer type, and casting another pointer type to
+<code>void *</code>.
+</p>
+<p>One common kind of pointer cast is guaranteed safe: casting the value
+returned by <code>malloc</code> and related functions (see <a href="Dynamic-Memory-Allocation.html">Dynamic Memory Allocation</a>).  It is safe because these functions do not save the
+pointer anywhere else; the only way the program will access the newly
+allocated memory is via the pointer just returned.
+</p>
+<p>In fact, C allows casting any pointer type to any other pointer type.
+Using this to access the same place in memory using two
+different data types is called <em>aliasing</em>.
+</p>
+<p>Aliasing is necessary in some programs that do sophisticated memory
+management, such as GNU Emacs, but most C programs don&rsquo;t need to do
+aliasing.  When it isn&rsquo;t needed, <strong>stay away from it!</strong>  To do
+aliasing correctly requires following the rules stated below.
+Otherwise, the aliasing may result in malfunctions when the program
+runs.
+</p>
+<p>The rest of this appendix explains the pitfalls and rules of aliasing.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Aliasing-Alignment.html" accesskey="1">Aliasing Alignment</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Memory alignment considerations for
+                           casting between pointer types.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Aliasing-Length.html" accesskey="2">Aliasing Length</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Type size considerations for
+                           casting between pointer types.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Aliasing-Type-Rules.html" accesskey="3">Aliasing Type Rules</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Even when type alignment and size matches,
+                           aliasing can still have surprising results.
+</td></tr>
+<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
+
+</pre></th></tr></table>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Allocating-File_002dScope.html
===================================================================
--- public/doc/gnu-c/Allocating-File_002dScope.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Allocating-File_002dScope.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,103 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Allocating File-Scope (GNU C Language Manual)</title>
+
+<meta name="description" content="Allocating File-Scope (GNU C Language Manual)">
+<meta name="keywords" content="Allocating File-Scope (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Variables.html" rel="up" title="Variables">
+<link href="auto-and-register.html" rel="next" title="auto and register">
+<link href="Extern-Declarations.html" rel="prev" title="Extern Declarations">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Allocating-File_002dScope"></span><div class="header">
+<p>
+Next: <a href="auto-and-register.html" accesskey="n" rel="next">auto and register</a>, Previous: <a href="Extern-Declarations.html" accesskey="p" rel="prev">Extern Declarations</a>, Up: <a href="Variables.html" accesskey="u" rel="up">Variables</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>
+</div>
+<hr>
+<span id="Allocating-File_002dScope-Variables"></span><h3 class="section">20.9 Allocating File-Scope Variables</h3>
+<span id="index-allocation-file_002dscope-variables"></span>
+<span id="index-file_002dscope-variables_002c-allocating"></span>
+
+<p>Some file-scope declarations allocate space for the variable, and some
+don&rsquo;t.
+</p>
+<p>A file-scope declaration with an initial value <em>must</em> allocate
+space for the variable; if there are two of such declarations for the
+same variable, even in different compilation modules, they conflict.
+</p>
+<p>An <code>extern</code> declaration <em>never</em> allocates space for the variable.
+If all the top-level declarations of a certain variable are
+<code>extern</code>, the variable never gets memory space.  If that variable
+is used anywhere in the program, the use will be reported as an error,
+saying that the variable is not defined.
+</p>
+<span id="index-tentative-definition"></span>
+<p>A file-scope declaration without an initial value is called a
+<em>tentative definition</em>.  This is a strange hybrid: it <em>can</em>
+allocate space for the variable, but does not insist.  So it causes no
+conflict, no error, if the variable has another declaration that
+allocates space for it, perhaps in another compilation module.  But if
+nothing else allocates space for the variable, the tentative
+definition will do it.  Any number of compilation modules can declare
+the same variable in this way, and that is sufficient for all of them
+to use the variable.
+</p>
+<p>In programs that are very large or have many contributors, it may be
+wise to adopt the convention of never using tentative definitions.
+You can use the compilation option <samp>-fno-common</samp> to make them
+an error, or <samp>--warn-common</samp> to warn about them.
+</p>
+<p>If a file-scope variable gets its space through a tentative
+definition, it starts out containing all zeros.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Argument-Prescan.html
===================================================================
--- public/doc/gnu-c/Argument-Prescan.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Argument-Prescan.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,164 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Argument Prescan (GNU C Language Manual)</title>
+
+<meta name="description" content="Argument Prescan (GNU C Language Manual)">
+<meta name="keywords" content="Argument Prescan (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Macro-Pitfalls.html" rel="up" title="Macro Pitfalls">
+<link href="Conditionals.html" rel="next" title="Conditionals">
+<link href="Self_002dReferential-Macros.html" rel="prev" title="Self-Referential Macros">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Argument-Prescan"></span><div class="header">
+<p>
+Previous: <a href="Self_002dReferential-Macros.html" accesskey="p" rel="prev">Self-Referential Macros</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>
+</div>
+<hr>
+<span id="Argument-Prescan-1"></span><h4 class="subsubsection">26.5.10.7 Argument Prescan</h4>
+<span id="index-expansion-of-arguments"></span>
+<span id="index-macro-argument-expansion"></span>
+<span id="index-prescan-of-macro-arguments"></span>
+
+<p>Macro arguments are completely macro-expanded before they are
+substituted into a macro body, unless they are stringified or pasted
+with other tokens.  After substitution, the entire macro body, including
+the substituted arguments, is scanned again for macros to be expanded.
+The result is that the arguments are scanned <em>twice</em> to expand
+macro calls in them.
+</p>
+<p>Most of the time, this has no effect.  If the argument contained any
+macro calls, they were expanded during the first scan.  The result
+therefore contains no macro calls, so the second scan does not change
+it.  If the argument were substituted as given, with no prescan, the
+single remaining scan would find the same macro calls and produce the
+same results.
+</p>
+<p>You might expect the double scan to change the results when a
+self-referential macro is used in an argument of another macro
+(see <a href="Self_002dReferential-Macros.html">Self-Referential Macros</a>): the self-referential macro would be
+expanded once in the first scan, and a second time in the second scan.
+However, this is not what happens.  The self-references that do not
+expand in the first scan are marked so that they will not expand in the
+second scan either.
+</p>
+<p>You might wonder, &ldquo;Why mention the prescan, if it makes no difference?
+And why not skip it and make preprocessing go faster?&rdquo;  The answer is
+that the prescan does make a difference in three special cases:
+</p>
+<ul>
+<li> Nested calls to a macro.
+
+<p>We say that <em>nested</em> calls to a macro occur when a macro&rsquo;s argument
+contains a call to that very macro.  For example, if <code>f</code> is a macro
+that expects one argument, <code>f (f (1))</code> is a nested pair of calls to
+<code>f</code>.  The desired expansion is made by expanding <code>f (1)</code> and
+substituting that into the definition of <code>f</code>.  The prescan causes
+the expected result to happen.  Without the prescan, <code>f (1)</code> itself
+would be substituted as an argument, and the inner use of <code>f</code> would
+appear during the main scan as an indirect self-reference and would not
+be expanded.
+</p>
+</li><li> Macros that call other macros that stringify or concatenate.
+
+<p>If an argument is stringified or concatenated, the prescan does not
+occur.  If you <em>want</em> to expand a macro, then stringify or
+concatenate its expansion, you can do that by causing one macro to call
+another macro that does the stringification or concatenation.  For
+instance, if you have
+</p>
+<div class="example">
+<pre class="example">#define AFTERX(x) X_ ## x
+#define XAFTERX(x) AFTERX(x)
+#define TABLESIZE 1024
+#define BUFSIZE TABLESIZE
+</pre></div>
+
+<p>then <code>AFTERX(BUFSIZE)</code> expands to <code>X_BUFSIZE</code>, and
+<code>XAFTERX(BUFSIZE)</code> expands to <code>X_1024</code>.  (Not to
+<code>X_TABLESIZE</code>.  Prescan always does a complete expansion.)
+</p>
+</li><li> Macros used in arguments, whose expansions contain unshielded commas.
+
+<p>This can cause a macro expanded on the second scan to be called with the
+wrong number of arguments.  Here is an example:
+</p>
+<div class="example">
+<pre class="example">#define foo  a,b
+#define bar(x) lose(x)
+#define lose(x) (1 + (x))
+</pre></div>
+
+<p>We would like <code>bar(foo)</code> to turn into <code>(1 + (foo))</code>, which
+would then turn into <code>(1 + (a,b))</code>.  Instead, <code>bar(foo)</code>
+expands into <code>lose(a,b)</code>, which gives an error because <code>lose</code>
+requires a single argument.  In this case, the problem is easily solved
+by the same parentheses that ought to be used to prevent misnesting of
+arithmetic operations:
+</p>
+<div class="example">
+<pre class="example">#define foo (a,b)
+</pre><pre class="example">or
+</pre><pre class="example">#define bar(x) lose((x))
+</pre></div>
+
+<p>The extra pair of parentheses prevents the comma in <code>foo</code>&rsquo;s
+definition from being interpreted as an argument separator.
+</p></li></ul>
+
+
+<hr>
+<div class="header">
+<p>
+Previous: <a href="Self_002dReferential-Macros.html" accesskey="p" rel="prev">Self-Referential Macros</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Argument-Promotions.html
===================================================================
--- public/doc/gnu-c/Argument-Promotions.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Argument-Promotions.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,107 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Argument Promotions (GNU C Language Manual)</title>
+
+<meta name="description" content="Argument Promotions (GNU C Language Manual)">
+<meta name="keywords" content="Argument Promotions (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Type-Conversions.html" rel="up" title="Type Conversions">
+<link href="Operand-Promotions.html" rel="next" title="Operand Promotions">
+<link href="Assignment-Type-Conversions.html" rel="prev" title="Assignment Type Conversions">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Argument-Promotions"></span><div class="header">
+<p>
+Next: <a href="Operand-Promotions.html" accesskey="n" rel="next">Operand Promotions</a>, Previous: <a href="Assignment-Type-Conversions.html" accesskey="p" rel="prev">Assignment Type Conversions</a>, Up: <a href="Type-Conversions.html" accesskey="u" rel="up">Type Conversions</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>
+</div>
+<hr>
+<span id="Argument-Promotions-1"></span><h3 class="section">24.3 Argument Promotions</h3>
+<span id="index-argument-promotions"></span>
+<span id="index-promotion-of-arguments"></span>
+
+<p>When a function&rsquo;s definition or declaration does not specify the type
+of an argument, that argument is passed without conversion in whatever
+type it has, with these exceptions:
+</p>
+<ul>
+<li> Some narrow numeric values are <em>promoted</em> to a wider type.  If the
+expression is a narrow integer, such as <code>char</code> or <code>short</code>,
+the call converts it automatically to <code>int</code> (see <a href="Integer-Types.html">Integer Types</a>).<a id="DOCF8" href="#FOOT8"><sup>8</sup></a>
+
+<p>In this example, the expression <code>c</code> is passed as an <code>int</code>:
+</p>
+<div class="example">
+<pre class="example">char c = '$';
+
+printf (&quot;Character c is '%c'\n&quot;, c);
+</pre></div>
+
+</li><li> If the expression
+has type <code>float</code>, the call converts it automatically to
+<code>double</code>.
+
+</li><li> An array as argument is converted to a pointer to its zeroth element.
+
+</li><li> A function name as argument is converted to a pointer to that function.
+</li></ul>
+
+<div class="footnote">
+<hr>
+<h4 class="footnotes-heading">Footnotes</h4>
+
+<h5><a id="FOOT8" href="#DOCF8">(8)</a></h3>
+<p>On an embedded controller where <code>char</code>
+or <code>short</code> is the same width as <code>int</code>, <code>unsigned char</code>
+or <code>unsigned short</code> promotes to <code>unsigned int</code>, but that
+never occurs in GNU C on real computers.</p>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Arithmetic.html
===================================================================
--- public/doc/gnu-c/Arithmetic.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Arithmetic.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,126 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Arithmetic (GNU C Language Manual)</title>
+
+<meta name="description" content="Arithmetic (GNU C Language Manual)">
+<meta name="keywords" content="Arithmetic (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html" rel="up" title="Top">
+<link href="Basic-Arithmetic.html" rel="next" title="Basic Arithmetic">
+<link href="Line-Continuation.html" rel="prev" title="Line Continuation">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Arithmetic"></span><div class="header">
+<p>
+Next: <a href="Assignment-Expressions.html" accesskey="n" rel="next">Assignment Expressions</a>, Previous: <a href="Lexical-Syntax.html" accesskey="p" rel="prev">Lexical Syntax</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</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>
+</div>
+<hr>
+<span id="Arithmetic-1"></span><h2 class="chapter">6 Arithmetic</h2>
+<span id="index-arithmetic-operators"></span>
+<span id="index-operators_002c-arithmetic"></span>
+
+
+<p>Arithmetic operators in C attempt to be as similar as possible to the
+abstract arithmetic operations, but it is impossible to do this
+perfectly.  Numbers in a computer have a finite range of possible
+values, and non-integer values have a limit on their possible
+accuracy.  Nonetheless, in most cases you will encounter no surprises
+in using &lsquo;<samp>+</samp>&rsquo; for addition, &lsquo;<samp>-</samp>&rsquo; for subtraction, and &lsquo;<samp>*</samp>&rsquo;
+for multiplication.
+</p>
+<p>Each C operator has a <em>precedence</em>, which is its rank in the
+grammatical order of the various operators.  The operators with the
+highest precedence grab adjoining operands first; these expressions
+then become operands for operators of lower precedence.  We give some
+information about precedence of operators in this chapter where we
+describe the operators; for the full explanation, see <a href="Binary-Operator-Grammar.html">Binary Operator Grammar</a>.
+</p>
+<p>The arithmetic operators always <em>promote</em> their operands before
+operating on them.  This means converting narrow integer data types to
+a wider data type (see <a href="Operand-Promotions.html">Operand Promotions</a>).  If you are just
+learning C, don&rsquo;t worry about this yet.
+</p>
+<p>Given two operands that have different types, most arithmetic
+operations convert them both to their <em>common type</em>.  For
+instance, if one is <code>int</code> and the other is <code>double</code>, the
+common type is <code>double</code>.  (That&rsquo;s because <code>double</code> can
+represent all the values that an <code>int</code> can hold, but not vice
+versa.)  For the full details, see <a href="Common-Type.html">Common Type</a>.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Basic-Arithmetic.html" accesskey="1">Basic Arithmetic</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Addition, subtraction, multiplication,
+                             and division.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Integer-Arithmetic.html" accesskey="2">Integer Arithmetic</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How C performs arithmetic with integer values.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Integer-Overflow.html" accesskey="3">Integer Overflow</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">When an integer value exceeds the range
+                             of its type.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Mixed-Mode.html" accesskey="4">Mixed Mode</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Calculating with both integer values
+                             and floating-point values.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Division-and-Remainder.html" accesskey="5">Division and Remainder</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How integer division works.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Numeric-Comparisons.html" accesskey="6">Numeric Comparisons</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Comparing numeric values for equality or order.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Shift-Operations.html" accesskey="7">Shift Operations</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Shift integer bits left or right.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Bitwise-Operations.html" accesskey="8">Bitwise Operations</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Bitwise conjunction, disjunction, negation.
+</td></tr>
+</table>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Assignment-Expressions.html" accesskey="n" rel="next">Assignment Expressions</a>, Previous: <a href="Lexical-Syntax.html" accesskey="p" rel="prev">Lexical Syntax</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Array-Example-Call.html
===================================================================
--- public/doc/gnu-c/Array-Example-Call.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Array-Example-Call.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,133 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Array Example Call (GNU C Language Manual)</title>
+
+<meta name="description" content="Array Example Call (GNU C Language Manual)">
+<meta name="keywords" content="Array Example Call (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Beyond-Integers.html" rel="up" title="Beyond Integers">
+<link href="Array-Example-Variations.html" rel="next" title="Array Example Variations">
+<link href="Array-Example.html" rel="prev" title="Array Example">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Array-Example-Call"></span><div class="header">
+<p>
+Next: <a href="Array-Example-Variations.html" accesskey="n" rel="next">Array Example Variations</a>, Previous: <a href="Array-Example.html" accesskey="p" rel="prev">Array Example</a>, Up: <a href="Beyond-Integers.html" accesskey="u" rel="up">Beyond Integers</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>
+</div>
+<hr>
+<span id="Calling-the-Array-Example"></span><h3 class="section">4.3 Calling the Array Example</h3>
+
+<p>To call the function <code>avg_of_double</code> requires making an
+array and then passing it as an argument.  Here is an example.
+</p>
+<div class="example">
+<pre class="example">{
+  /* <span class="roman">The array of values to average.</span>  */
+  double nums_to_average[5];
+  /* <span class="roman">The average, once we compute it.</span>  */
+  double average;
+
+  /* <span class="roman">Fill in elements of <code>nums_to_average</code>.</span>  */
+
+  nums_to_average[0] = 58.7;
+  nums_to_average[1] = 5.1;
+  nums_to_average[2] = 7.7;
+  nums_to_average[3] = 105.2;
+  nums_to_average[4] = -3.14159;
+
+  average = avg_of_double (5, nums_to_average);
+
+  /* <span class="roman">&hellip;now make use of <code>average</code>&hellip;</span> */
+}
+</pre></div>
+
+<p>This shows an array subscripting expression again, this time
+on the left side of an assignment, storing a value into an
+element of an array.
+</p>
+<p>It also shows how to declare a local variable that is an array:
+<code>double nums_to_average[5];</code>.  Since this declaration allocates the
+space for the array, it needs to know the array&rsquo;s length.  You can
+specify the length with any expression whose value is an integer, but
+in this declaration the length is a constant, the integer 5.
+</p>
+<p>The name of the array, when used by itself as an expression, stands
+for the address of the array&rsquo;s data, and that&rsquo;s what gets passed to
+the function <code>avg_of_double</code> in <code>avg_of_double (5,
+nums_to_average)</code>.
+</p>
+<p>We can make the code easier to maintain by avoiding the need to write
+5, the array length, when calling <code>avg_of_double</code>.  That way, if
+we change the array to include more elements, we won&rsquo;t have to change
+that call.  One way to do this is with the <code>sizeof</code> operator:
+</p>
+<div class="example">
+<pre class="example">  average = avg_of_double ((sizeof (nums_to_average)
+                            / sizeof (nums_to_average[0])),
+                           nums_to_average);
+</pre></div>
+
+<p>This computes the number of elements in <code>nums_to_average</code> by dividing
+its total size by the size of one element.  See <a href="Type-Size.html">Type Size</a>, for more
+details of using <code>sizeof</code>.
+</p>
+<p>We don&rsquo;t show in this example what happens after storing the result of
+<code>avg_of_double</code> in the variable <code>average</code>.  Presumably
+more code would follow that uses that result somehow.  (Why compute
+the average and not use it?)  But that isn&rsquo;t part of this topic.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Array-Example-Variations.html" accesskey="n" rel="next">Array Example Variations</a>, Previous: <a href="Array-Example.html" accesskey="p" rel="prev">Array Example</a>, Up: <a href="Beyond-Integers.html" accesskey="u" rel="up">Beyond Integers</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Array-Example-Variations.html
===================================================================
--- public/doc/gnu-c/Array-Example-Variations.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Array-Example-Variations.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,131 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Array Example Variations (GNU C Language Manual)</title>
+
+<meta name="description" content="Array Example Variations (GNU C Language Manual)">
+<meta name="keywords" content="Array Example Variations (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Beyond-Integers.html" rel="up" title="Beyond Integers">
+<link href="Lexical-Syntax.html" rel="next" title="Lexical Syntax">
+<link href="Array-Example-Call.html" rel="prev" title="Array Example Call">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Array-Example-Variations"></span><div class="header">
+<p>
+Previous: <a href="Array-Example-Call.html" accesskey="p" rel="prev">Array Example Call</a>, Up: <a href="Beyond-Integers.html" accesskey="u" rel="up">Beyond Integers</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>
+</div>
+<hr>
+<span id="Variations-for-Array-Example"></span><h3 class="section">4.4 Variations for Array Example</h3>
+
+<p>The code to call <code>avg_of_double</code> has two declarations that
+start with the same data type:
+</p>
+<div class="example">
+<pre class="example">  /* <span class="roman">The array of values to average.</span>  */
+  double nums_to_average[5];
+  /* <span class="roman">The average, once we compute it.</span>  */
+  double average;
+</pre></div>
+
+<p>In C, you can combine the two, like this:
+</p>
+<div class="example">
+<pre class="example">  double nums_to_average[5], average;
+</pre></div>
+
+<p>This declares <code>nums_to_average</code> so each of its elements is a
+<code>double</code>, and <code>average</code> so that it simply is a
+<code>double</code>.
+</p>
+<p>However, while you <em>can</em> combine them, that doesn&rsquo;t mean you
+<em>should</em>.  If it is useful to write comments about the variables,
+and usually it is, then it&rsquo;s clearer to keep the declarations separate
+so you can put a comment on each one.
+</p>
+<p>We set all of the elements of the array <code>nums_to_average</code> with
+assignments, but it is more convenient to use an initializer in the
+declaration:
+</p>
+<div class="example">
+<pre class="example">{
+  /* <span class="roman">The array of values to average.</span>  */
+  double nums_to_average[]
+    = { 58.7, 5.1, 7.7, 105.2, -3.14159 };
+
+  /* <span class="roman">The average, once we compute it.</span>  */
+  average = avg_of_double ((sizeof (nums_to_average)
+                            / sizeof (nums_to_average[0])),
+                           nums_to_average);
+
+  /* <span class="roman">&hellip;now make use of <code>average</code>&hellip;</span> */
+}
+</pre></div>
+
+<p>The array initializer is a comma-separated list of values, delimited
+by braces.  See <a href="Initializers.html">Initializers</a>.
+</p>
+<p>Note that the declaration does not specify a size for
+<code>nums_to_average</code>, so the size is determined from the
+initializer.  There are five values in the initializer, so
+<code>nums_to_average</code> gets length 5.  If we add another element to
+the initializer, <code>nums_to_average</code> will have six elements.
+</p>
+<p>Because the code computes the number of elements from the size of
+the array, using <code>sizeof</code>, the program will operate on all the
+elements in the initializer, regardless of how many those are.
+</p>
+<hr>
+<div class="header">
+<p>
+Previous: <a href="Array-Example-Call.html" accesskey="p" rel="prev">Array Example Call</a>, Up: <a href="Beyond-Integers.html" accesskey="u" rel="up">Beyond Integers</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Array-Example.html
===================================================================
--- public/doc/gnu-c/Array-Example.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Array-Example.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,127 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Array Example (GNU C Language Manual)</title>
+
+<meta name="description" content="Array Example (GNU C Language Manual)">
+<meta name="keywords" content="Array Example (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Beyond-Integers.html" rel="up" title="Beyond Integers">
+<link href="Array-Example-Call.html" rel="next" title="Array Example Call">
+<link href="Float-Example.html" rel="prev" title="Float Example">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Array-Example"></span><div class="header">
+<p>
+Next: <a href="Array-Example-Call.html" accesskey="n" rel="next">Array Example Call</a>, Previous: <a href="Float-Example.html" accesskey="p" rel="prev">Float Example</a>, Up: <a href="Beyond-Integers.html" accesskey="u" rel="up">Beyond Integers</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>
+</div>
+<hr>
+<span id="An-Example-with-Arrays"></span><h3 class="section">4.2 An Example with Arrays</h3>
+<span id="index-array-example"></span>
+
+<p>A function to take the average of three numbers is very specific and
+limited.  A more general function would take the average of any number
+of numbers.  That requires passing the numbers in an array.  An array
+is an object in memory that contains a series of values of the same
+data type.  This chapter presents the basic concepts and use of arrays
+through an example; for the full explanation, see <a href="Arrays.html">Arrays</a>.
+</p>
+<p>Here&rsquo;s a function definition to take the average of several
+floating-point numbers, passed as type <code>double</code>.  The first
+parameter, <code>length</code>, specifies how many numbers are passed.  The
+second parameter, <code>input_data</code>, is an array that holds those
+numbers.
+</p>
+<div class="example">
+<pre class="example">double
+avg_of_double (int length, double input_data[])
+{
+  double sum = 0;
+  int i;
+
+  for (i = 0; i &lt; length; i++)
+    sum = sum + input_data[i];
+
+  return sum / length;
+}
+</pre></div>
+
+<p>This introduces the expression to refer to an element of an array:
+<code>input_data[i]</code> means the element at index <code>i</code> in
+<code>input_data</code>.  The index of the element can be any expression
+with an integer value; in this case, the expression is <code>i</code>.
+See <a href="Accessing-Array-Elements.html">Accessing Array Elements</a>.
+</p>
+<span id="index-zero_002dorigin-indexing"></span>
+<p>The lowest valid index in an array is 0, <em>not</em> 1, and the highest
+valid index is one less than the number of elements.  (This is known
+as <em>zero-origin indexing</em>.)
+</p>
+<p>This example also introduces the way to declare that a function
+parameter is an array.  Such declarations are modeled after the syntax
+for an element of the array.  Just as <code>double foo</code> declares that
+<code>foo</code> is of type <code>double</code>, <code>double input_data[]</code>
+declares that each element of <code>input_data</code> is of type
+<code>double</code>.  Therefore, <code>input_data</code> itself has type &ldquo;array
+of <code>double</code>.&rdquo;
+</p>
+<p>When declaring an array parameter, it&rsquo;s not necessary to say how long
+the array is.  In this case, the parameter <code>input_data</code> has no
+length information.  That&rsquo;s why the function needs another parameter,
+<code>length</code>, for the caller to provide that information to the
+function <code>avg_of_double</code>.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Array-Example-Call.html" accesskey="n" rel="next">Array Example Call</a>, Previous: <a href="Float-Example.html" accesskey="p" rel="prev">Float Example</a>, Up: <a href="Beyond-Integers.html" accesskey="u" rel="up">Beyond Integers</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Array-Parm-Pointer.html
===================================================================
--- public/doc/gnu-c/Array-Parm-Pointer.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Array-Parm-Pointer.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,113 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Array Parm Pointer (GNU C Language Manual)</title>
+
+<meta name="description" content="Array Parm Pointer (GNU C Language Manual)">
+<meta name="keywords" content="Array Parm Pointer (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Arrays-as-Parameters.html" rel="up" title="Arrays as Parameters">
+<link href="Passing-Array-Args.html" rel="next" title="Passing Array Args">
+<link href="Arrays-as-Parameters.html" rel="prev" title="Arrays as Parameters">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Array-Parm-Pointer"></span><div class="header">
+<p>
+Next: <a href="Passing-Array-Args.html" accesskey="n" rel="next">Passing Array Args</a>, Up: <a href="Arrays-as-Parameters.html" accesskey="u" rel="up">Arrays as Parameters</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>
+</div>
+<hr>
+<span id="Array-parameters-are-pointers"></span><h4 class="subsubsection">22.1.4.1 Array parameters are pointers</h4>
+
+<p>Declaring a function parameter variable as an array really gives it a
+pointer type.  C does this because an expression with array type, if
+used as an argument in a function call, is converted automatically to
+a pointer (to the zeroth element of the array).  If you declare the
+corresponding parameter as an &ldquo;array&rdquo;, it will work correctly with
+the pointer value that really gets passed.
+</p>
+<p>This relates to the fact that C does not check array bounds in access
+to elements of the array (see <a href="Accessing-Array-Elements.html">Accessing Array Elements</a>).
+</p>
+<p>For example, in this function,
+</p>
+<div class="example">
+<pre class="example">void
+clobber4 (int array[20])
+{
+  array[4] = 0;
+}
+</pre></div>
+
+<p>the parameter <code>array</code>&rsquo;s real type is <code>int *</code>; the specified
+length, 20, has no effect on the program.  You can leave out the length
+and write this:
+</p>
+<div class="example">
+<pre class="example">void
+clobber4 (int array[])
+{
+  array[4] = 0;
+}
+</pre></div>
+
+<p>or write the parameter declaration explicitly as a pointer:
+</p>
+<div class="example">
+<pre class="example">void
+clobber4 (int *array)
+{
+  array[4] = 0;
+}
+</pre></div>
+
+<p>They are all equivalent.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Array-Parm-Qualifiers.html
===================================================================
--- public/doc/gnu-c/Array-Parm-Qualifiers.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Array-Parm-Qualifiers.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,117 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Array Parm Qualifiers (GNU C Language Manual)</title>
+
+<meta name="description" content="Array Parm Qualifiers (GNU C Language Manual)">
+<meta name="keywords" content="Array Parm Qualifiers (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Arrays-as-Parameters.html" rel="up" title="Arrays as Parameters">
+<link href="Structs-as-Parameters.html" rel="next" title="Structs as Parameters">
+<link href="Passing-Array-Args.html" rel="prev" title="Passing Array Args">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Array-Parm-Qualifiers"></span><div class="header">
+<p>
+Previous: <a href="Passing-Array-Args.html" accesskey="p" rel="prev">Passing Array Args</a>, Up: <a href="Arrays-as-Parameters.html" accesskey="u" rel="up">Arrays as Parameters</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>
+</div>
+<hr>
+<span id="Type-qualifiers-on-array-parameters"></span><h4 class="subsubsection">22.1.4.3 Type qualifiers on array parameters</h4>
+
+<p>You can use the type qualifiers <code>const</code>, <code>restrict</code>, and
+<code>volatile</code> with array parameters; for example:
+</p>
+<div class="example">
+<pre class="example">void
+clobber4 (volatile int array[20])
+<span class="roman">&hellip;</span>
+</pre></div>
+
+<p>denotes that <code>array</code> is equivalent to a pointer to a volatile
+<code>int</code>.  Alternatively:
+</p>
+<div class="example">
+<pre class="example">void
+clobber4 (int array[const 20])
+<span class="roman">&hellip;</span>
+</pre></div>
+
+<p>makes the array parameter equivalent to a constant pointer to an
+<code>int</code>.  If we want the <code>clobber4</code> function to succeed, it
+would not make sense to write
+</p>
+<div class="example">
+<pre class="example">void
+clobber4 (const int array[20])
+<span class="roman">&hellip;</span>
+</pre></div>
+
+<p>as this would tell the compiler that the parameter should point to an
+array of constant <code>int</code> values, and then we would not be able to
+store zeros in them.
+</p>
+<p>In a function with multiple array parameters, you can use <code>restrict</code>
+to tell the compiler that each array parameter passed in will be distinct:
+</p>
+<div class="example">
+<pre class="example">void
+foo (int array1[restrict 10], int array2[restrict 10])
+<span class="roman">&hellip;</span>
+</pre></div>
+
+<p>Using <code>restrict</code> promises the compiler that callers will
+not pass in the same array for more than one <code>restrict</code> array
+parameter.  Knowing this enables the compiler to perform better code
+optimization. This is the same effect as using <code>restrict</code>
+pointers (see <a href="restrict-Pointers.html">restrict Pointers</a>), but makes it clear when reading
+the code that an array of a specific size is expected.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Array-Type-Designators.html
===================================================================
--- public/doc/gnu-c/Array-Type-Designators.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Array-Type-Designators.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,79 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Array Type Designators (GNU C Language Manual)</title>
+
+<meta name="description" content="Array Type Designators (GNU C Language Manual)">
+<meta name="keywords" content="Array Type Designators (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Arrays.html" rel="up" title="Arrays">
+<link href="Incomplete-Array-Types.html" rel="next" title="Incomplete Array Types">
+<link href="Strings.html" rel="prev" title="Strings">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Array-Type-Designators"></span><div class="header">
+<p>
+Next: <a href="Incomplete-Array-Types.html" accesskey="n" rel="next">Incomplete Array Types</a>, Previous: <a href="Strings.html" accesskey="p" rel="prev">Strings</a>, Up: <a href="Arrays.html" accesskey="u" rel="up">Arrays</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>
+</div>
+<hr>
+<span id="Array-Type-Designators-1"></span><h3 class="section">16.4 Array Type Designators</h3>
+
+<p>Every C type has a type designator, which you make by deleting the
+variable name and the semicolon from a declaration (see <a href="Type-Designators.html">Type Designators</a>).  The designators for array types follow this rule, but
+they may appear surprising.
+</p>
+<div class="example">
+<pre class="example"><span class="roman">type</span>   int a[5];           <span class="roman">designator</span>   int [5]
+<span class="roman">type</span>   double a[5][3];     <span class="roman">designator</span>   double [5][3]
+<span class="roman">type</span>   struct foo *a[5];   <span class="roman">designator</span>   struct foo *[5]
+</pre></div>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Arrays-as-Parameters.html
===================================================================
--- public/doc/gnu-c/Arrays-as-Parameters.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Arrays-as-Parameters.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,85 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Arrays as Parameters (GNU C Language Manual)</title>
+
+<meta name="description" content="Arrays as Parameters (GNU C Language Manual)">
+<meta name="keywords" content="Arrays as Parameters (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Function-Definitions.html" rel="up" title="Function Definitions">
+<link href="Array-Parm-Pointer.html" rel="next" title="Array Parm Pointer">
+<link href="Static-Functions.html" rel="prev" title="Static Functions">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Arrays-as-Parameters"></span><div class="header">
+<p>
+Next: <a href="Structs-as-Parameters.html" accesskey="n" rel="next">Structs as Parameters</a>, Previous: <a href="Static-Functions.html" accesskey="p" rel="prev">Static Functions</a>, Up: <a href="Function-Definitions.html" accesskey="u" rel="up">Function Definitions</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>
+</div>
+<hr>
+<span id="Arrays-as-Parameters-1"></span><h4 class="subsection">22.1.4 Arrays as Parameters</h4>
+<span id="index-array-as-parameters"></span>
+<span id="index-functions-with-array-parameters"></span>
+
+<p>Arrays in C are not first-class objects: it is impossible to copy
+them.  So they cannot be passed as arguments like other values.
+See <a href="Limitations-of-C-Arrays.html">Limitations of C Arrays</a>.  Rather, array parameters work in
+a special way.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Array-Parm-Pointer.html" accesskey="1">Array Parm Pointer</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Passing-Array-Args.html" accesskey="2">Passing Array Args</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Array-Parm-Qualifiers.html" accesskey="3">Array Parm Qualifiers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Arrays-of-Variable-Length.html
===================================================================
--- public/doc/gnu-c/Arrays-of-Variable-Length.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Arrays-of-Variable-Length.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,149 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Arrays of Variable Length (GNU C Language Manual)</title>
+
+<meta name="description" content="Arrays of Variable Length (GNU C Language Manual)">
+<meta name="keywords" content="Arrays of Variable Length (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Arrays.html" rel="up" title="Arrays">
+<link href="Enumeration-Types.html" rel="next" title="Enumeration Types">
+<link href="Constructing-Array-Values.html" rel="prev" title="Constructing Array Values">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Arrays-of-Variable-Length"></span><div class="header">
+<p>
+Previous: <a href="Constructing-Array-Values.html" accesskey="p" rel="prev">Constructing Array Values</a>, Up: <a href="Arrays.html" accesskey="u" rel="up">Arrays</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>
+</div>
+<hr>
+<span id="Arrays-of-Variable-Length-1"></span><h3 class="section">16.9 Arrays of Variable Length</h3>
+<span id="index-array-of-variable-length"></span>
+<span id="index-variable_002dlength-arrays"></span>
+
+<p>In GNU C, you can declare variable-length arrays like any other
+arrays, but with a length that is not a constant expression.  The
+storage is allocated at the point of declaration and deallocated when
+the block scope containing the declaration exits.  For example:
+</p>
+<div class="example">
+<pre class="example">#include &lt;stdio.h&gt;  /* <span class="roman">Defines <code>FILE</code>.</span> */
+#include &lt;string.h&gt; /* <span class="roman">Declares <code>str</code>.</span> */
+
+FILE *
+concat_fopen (char *s1, char *s2, char *mode)
+{
+  char str[strlen (s1) + strlen (s2) + 1];
+  strcpy (str, s1);
+  strcat (str, s2);
+  return fopen (str, mode);
+}
+</pre></div>
+
+<p>(This uses some standard library functions; see <a href="https://www.gnu.org/software/libc/manual/html_node/String-and-Array-Utilities.html#String-and-Array-Utilities">String and Array
+Utilities</a> in <cite>The GNU C Library Reference Manual</cite>.)
+</p>
+<p>The length of an array is computed once when the storage is allocated
+and is remembered for the scope of the array in case it is used in
+<code>sizeof</code>.
+</p>
+<p><strong>Warning:</strong> don&rsquo;t allocate a variable-length array if the size
+might be very large (more than 100,000), or in a recursive function,
+because that is likely to cause stack overflow.  Allocate the array
+dynamically instead (see <a href="Dynamic-Memory-Allocation.html">Dynamic Memory Allocation</a>).
+</p>
+<p>Jumping or breaking out of the scope of the array name deallocates the
+storage.  Jumping into the scope is not allowed; that gives an error
+message.
+</p>
+<p>You can also use variable-length arrays as arguments to functions:
+</p>
+<div class="example">
+<pre class="example">struct entry
+tester (int len, char data[len][len])
+{
+  <span class="roman">&hellip;</span>
+}
+</pre></div>
+
+<p>As usual, a function argument declared with an array type
+is really a pointer to an array that already exists.
+Calling the function does not allocate the array, so there&rsquo;s no
+particular danger of stack overflow in using this construct.
+</p>
+<p>To pass the array first and the length afterward, use a forward
+declaration in the function&rsquo;s parameter list (another GNU extension).
+For example,
+</p>
+<div class="example">
+<pre class="example">struct entry
+tester (int len; char data[len][len], int len)
+{
+  <span class="roman">&hellip;</span>
+}
+</pre></div>
+
+<p>The <code>int len</code> before the semicolon is a <em>parameter forward
+declaration</em>, and it serves the purpose of making the name <code>len</code>
+known when the declaration of <code>data</code> is parsed.
+</p>
+<p>You can write any number of such parameter forward declarations in the
+parameter list.  They can be separated by commas or semicolons, but
+the last one must end with a semicolon, which is followed by the
+&ldquo;real&rdquo; parameter declarations.  Each forward declaration must match
+a &ldquo;real&rdquo; declaration in parameter name and data type.  ISO C11 does
+not support parameter forward declarations.
+</p>
+<hr>
+<div class="header">
+<p>
+Previous: <a href="Constructing-Array-Values.html" accesskey="p" rel="prev">Constructing Array Values</a>, Up: <a href="Arrays.html" accesskey="u" rel="up">Arrays</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Arrays.html
===================================================================
--- public/doc/gnu-c/Arrays.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Arrays.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,114 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Arrays (GNU C Language Manual)</title>
+
+<meta name="description" content="Arrays (GNU C Language Manual)">
+<meta name="keywords" content="Arrays (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html" rel="up" title="Top">
+<link href="Accessing-Array-Elements.html" rel="next" title="Accessing Array Elements">
+<link href="Type-Tags.html" rel="prev" title="Type Tags">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Arrays"></span><div class="header">
+<p>
+Next: <a href="Enumeration-Types.html" accesskey="n" rel="next">Enumeration Types</a>, Previous: <a href="Structures.html" accesskey="p" rel="prev">Structures</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</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>
+</div>
+<hr>
+<span id="Arrays-1"></span><h2 class="chapter">16 Arrays</h2>
+<span id="index-array"></span>
+<span id="index-elements-of-arrays"></span>
+
+<p>An <em>array</em> is a data object that holds a series of <em>elements</em>,
+all of the same data type.  Each element is identified by its numeric
+<var>index</var> within the array.
+</p>
+<p>We presented arrays of numbers in the sample programs early in this
+manual (see <a href="Array-Example.html">Array Example</a>).  However, arrays can have elements of
+any data type, including pointers, structures, unions, and other
+arrays.
+</p>
+<p>If you know another programming language, you may suppose that you know all
+about arrays, but C arrays have special quirks, so in this chapter we
+collect all the information about arrays in C.
+</p>
+<p>The elements of a C array are allocated consecutively in memory,
+with no gaps between them.  Each element is aligned as required
+for its data type (see <a href="Type-Alignment.html">Type Alignment</a>).
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Accessing-Array-Elements.html" accesskey="1">Accessing Array Elements</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to access individual elements of an array.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Declaring-an-Array.html" accesskey="2">Declaring an Array</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to name and reserve space for a new array.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Strings.html" accesskey="3">Strings</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">A string in C is a special case of array.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Array-Type-Designators.html" accesskey="4">Array Type Designators</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Referring to a specific array type.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Incomplete-Array-Types.html" accesskey="5">Incomplete Array Types</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Naming, but not allocating, a new array.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Limitations-of-C-Arrays.html" accesskey="6">Limitations of C Arrays</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Arrays are not first-class objects.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Multidimensional-Arrays.html" accesskey="7">Multidimensional Arrays</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Arrays of arrays.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Constructing-Array-Values.html" accesskey="8">Constructing Array Values</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Assigning values to an entire array at once.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Arrays-of-Variable-Length.html" accesskey="9">Arrays of Variable Length</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Declaring arrays of non-constant size.
+</td></tr>
+</table>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Enumeration-Types.html" accesskey="n" rel="next">Enumeration Types</a>, Previous: <a href="Structures.html" accesskey="p" rel="prev">Structures</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Assigning-Function-Pointers.html
===================================================================
--- public/doc/gnu-c/Assigning-Function-Pointers.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Assigning-Function-Pointers.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,103 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Assigning Function Pointers (GNU C Language Manual)</title>
+
+<meta name="description" content="Assigning Function Pointers (GNU C Language Manual)">
+<meta name="keywords" content="Assigning Function Pointers (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Function-Pointers.html" rel="up" title="Function Pointers">
+<link href="Calling-Function-Pointers.html" rel="next" title="Calling Function Pointers">
+<link href="Declaring-Function-Pointers.html" rel="prev" title="Declaring Function Pointers">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Assigning-Function-Pointers"></span><div class="header">
+<p>
+Next: <a href="Calling-Function-Pointers.html" accesskey="n" rel="next">Calling Function Pointers</a>, Previous: <a href="Declaring-Function-Pointers.html" accesskey="p" rel="prev">Declaring Function Pointers</a>, Up: <a href="Function-Pointers.html" accesskey="u" rel="up">Function Pointers</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>
+</div>
+<hr>
+<span id="Assigning-Function-Pointers-1"></span><h4 class="subsection">22.5.2 Assigning Function Pointers</h4>
+<span id="index-assigning-function-pointers"></span>
+<span id="index-function-pointers_002c-assigning"></span>
+
+<p>Assuming we have declared the variable <code>binary_op</code> as in the
+previous section, giving it a value requires a suitable function to
+use.  So let&rsquo;s define a function suitable for the variable to point
+to.  Here&rsquo;s one:
+</p>
+<div class="example">
+<pre class="example">double
+double_add (double a, double b)
+{
+  return a+b;
+}
+</pre></div>
+
+<p>Now we can give it a value:
+</p>
+<div class="example">
+<pre class="example">binary_op = double_add;
+</pre></div>
+
+<p>The target type of the function pointer must be upward compatible with
+the type of the function (see <a href="Compatible-Types.html">Compatible Types</a>).
+</p>
+<p>There is no need for &lsquo;<samp>&amp;</samp>&rsquo; in front of <code>double_add</code>.
+Using a function name such as <code>double_add</code> as an expression
+automatically converts it to the function&rsquo;s address, with the
+appropriate function pointer type.  However, it is ok to use
+&lsquo;<samp>&amp;</samp>&rsquo; if you feel that is clearer:
+</p>
+<div class="example">
+<pre class="example">binary_op = &amp;double_add;
+</pre></div>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Assignment-Expressions.html
===================================================================
--- public/doc/gnu-c/Assignment-Expressions.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Assignment-Expressions.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,146 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Assignment Expressions (GNU C Language Manual)</title>
+
+<meta name="description" content="Assignment Expressions (GNU C Language Manual)">
+<meta name="keywords" content="Assignment Expressions (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html" rel="up" title="Top">
+<link href="Simple-Assignment.html" rel="next" title="Simple Assignment">
+<link href="Bitwise-Operations.html" rel="prev" title="Bitwise Operations">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Assignment-Expressions"></span><div class="header">
+<p>
+Next: <a href="Execution-Control-Expressions.html" accesskey="n" rel="next">Execution Control Expressions</a>, Previous: <a href="Arithmetic.html" accesskey="p" rel="prev">Arithmetic</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</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>
+</div>
+<hr>
+<span id="Assignment-Expressions-1"></span><h2 class="chapter">7 Assignment Expressions</h2>
+<span id="index-assignment-expressions"></span>
+<span id="index-operators_002c-assignment"></span>
+
+<p>As a general concept in programming, an <em>assignment</em> is a
+construct that stores a new value into a place where values can be
+stored&mdash;for instance, in a variable.  Such places are called
+<em>lvalues</em> (see <a href="Lvalues.html">Lvalues</a>) because they are locations that hold a value.
+</p>
+<p>An assignment in C is an expression because it has a value; we call
+it an <em>assignment expression</em>.  A simple assignment looks like
+</p>
+<div class="example">
+<pre class="example"><var>lvalue</var> = <var>value-to-store</var>
+</pre></div>
+
+<p>We say it assigns the value of the expression <var>value-to-store</var> to
+the location <var>lvalue</var>, or that it stores <var>value-to-store</var>
+there.  You can think of the &ldquo;l&rdquo; in &ldquo;lvalue&rdquo; as standing for
+&ldquo;left,&rdquo; since that&rsquo;s what you put on the left side of the assignment
+operator.
+</p>
+<p>However, that&rsquo;s not the only way to use an lvalue, and not all lvalues
+can be assigned to.  To use the lvalue in the left side of an
+assignment, it has to be <em>modifiable</em>.  In C, that means it was
+not declared with the type qualifier <code>const</code> (see <a href="const.html">const</a>).
+</p>
+<p>The value of the assignment expression is that of <var>lvalue</var> after
+the new value is stored in it.  This means you can use an assignment
+inside other expressions.  Assignment operators are right-associative
+so that
+</p>
+<div class="example">
+<pre class="example">x = y = z = 0;
+</pre></div>
+
+<p>is equivalent to
+</p>
+<div class="example">
+<pre class="example">x = (y = (z = 0));
+</pre></div>
+
+<p>This is the only useful way for them to associate;
+the other way,
+</p>
+<div class="example">
+<pre class="example">((x = y) = z) = 0;
+</pre></div>
+
+<p>would be invalid since an assignment expression such as <code>x = y</code>
+is not valid as an lvalue.
+</p>
+<p><strong>Warning:</strong> Write parentheses around an assignment if you nest
+it inside another expression, unless that is a conditional expression,
+or comma-separated series, or another assignment.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Simple-Assignment.html" accesskey="1">Simple Assignment</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The basics of storing a value.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Lvalues.html" accesskey="2">Lvalues</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Expressions into which a value can be stored.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Modifying-Assignment.html" accesskey="3">Modifying Assignment</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Shorthand for changing an lvalue&rsquo;s contents.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Increment_002fDecrement.html" accesskey="4">Increment/Decrement</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Shorthand for incrementing and decrementing
+                                   an lvalue&rsquo;s contents.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Postincrement_002fPostdecrement.html" accesskey="5">Postincrement/Postdecrement</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Accessing then incrementing or decrementing.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Assignment-in-Subexpressions.html" accesskey="6">Assignment in Subexpressions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to avoid ambiguity.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Write-Assignments-Separately.html" accesskey="7">Write Assignments Separately</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Write assignments as separate statements.
+</td></tr>
+</table>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Execution-Control-Expressions.html" accesskey="n" rel="next">Execution Control Expressions</a>, Previous: <a href="Arithmetic.html" accesskey="p" rel="prev">Arithmetic</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Assignment-Type-Conversions.html
===================================================================
--- public/doc/gnu-c/Assignment-Type-Conversions.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Assignment-Type-Conversions.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,133 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Assignment Type Conversions (GNU C Language Manual)</title>
+
+<meta name="description" content="Assignment Type Conversions (GNU C Language Manual)">
+<meta name="keywords" content="Assignment Type Conversions (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Type-Conversions.html" rel="up" title="Type Conversions">
+<link href="Argument-Promotions.html" rel="next" title="Argument Promotions">
+<link href="Explicit-Type-Conversion.html" rel="prev" title="Explicit Type Conversion">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Assignment-Type-Conversions"></span><div class="header">
+<p>
+Next: <a href="Argument-Promotions.html" accesskey="n" rel="next">Argument Promotions</a>, Previous: <a href="Explicit-Type-Conversion.html" accesskey="p" rel="prev">Explicit Type Conversion</a>, Up: <a href="Type-Conversions.html" accesskey="u" rel="up">Type Conversions</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>
+</div>
+<hr>
+<span id="Assignment-Type-Conversions-1"></span><h3 class="section">24.2 Assignment Type Conversions</h3>
+<span id="index-assignment-type-conversions"></span>
+
+<p>Certain type conversions occur automatically in assignments
+and certain other contexts.  These are the conversions
+assignments can do:
+</p>
+<ul>
+<li> Converting any numeric type to any other numeric type.
+
+</li><li> Converting <code>void *</code> to any other pointer type
+(except pointer-to-function types).
+
+</li><li> Converting any other pointer type to <code>void *</code>.
+(except pointer-to-function types).
+
+</li><li> Converting 0 (a null pointer constant) to any pointer type.
+
+</li><li> Converting any pointer type to <code>bool</code>.  (The result is
+1 if the pointer is not null.)
+
+</li><li> Converting between pointer types when the left-hand target type is
+upward compatible with the right-hand target type.  See <a href="Compatible-Types.html">Compatible Types</a>.
+</li></ul>
+
+<p>These type conversions occur automatically in certain contexts,
+which are:
+</p>
+<ul>
+<li> An assignment converts the type of the right-hand expression
+to the type wanted by the left-hand expression.  For example,
+
+<div class="example">
+<pre class="example">double i;
+i = 5;
+</pre></div>
+
+<p>converts 5 to <code>double</code>.
+</p>
+</li><li> A function call, when the function specifies the type for that
+argument, converts the argument value to that type.  For example,
+
+<div class="example">
+<pre class="example">void foo (double);
+foo (5);
+</pre></div>
+
+<p>converts 5 to <code>double</code>.
+</p>
+</li><li> A <code>return</code> statement converts the specified value to the type
+that the function is declared to return.  For example,
+
+<div class="example">
+<pre class="example">double
+foo ()
+{
+  return 5;
+}
+</pre></div>
+
+<p>also converts 5 to <code>double</code>.
+</p></li></ul>
+
+<p>In all three contexts, if the conversion is impossible, that
+constitutes an error.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Assignment-in-Subexpressions.html
===================================================================
--- public/doc/gnu-c/Assignment-in-Subexpressions.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Assignment-in-Subexpressions.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,111 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Assignment in Subexpressions (GNU C Language Manual)</title>
+
+<meta name="description" content="Assignment in Subexpressions (GNU C Language Manual)">
+<meta name="keywords" content="Assignment in Subexpressions (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Assignment-Expressions.html" rel="up" title="Assignment Expressions">
+<link href="Write-Assignments-Separately.html" rel="next" title="Write Assignments Separately">
+<link href="Postincrement_002fPostdecrement.html" rel="prev" title="Postincrement/Postdecrement">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Assignment-in-Subexpressions"></span><div class="header">
+<p>
+Next: <a href="Write-Assignments-Separately.html" accesskey="n" rel="next">Write Assignments Separately</a>, Previous: <a href="Postincrement_002fPostdecrement.html" accesskey="p" rel="prev">Postincrement/Postdecrement</a>, Up: <a href="Assignment-Expressions.html" accesskey="u" rel="up">Assignment Expressions</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>
+</div>
+<hr>
+<span id="Pitfall_003a-Assignment-in-Subexpressions"></span><h3 class="section">7.6 Pitfall: Assignment in Subexpressions</h3>
+<span id="index-assignment-in-subexpressions"></span>
+<span id="index-subexpressions_002c-assignment-in"></span>
+
+<p>In C, the order of computing parts of an expression is not fixed.
+Aside from a few special cases, the operations can be computed in any
+order.  If one part of the expression has an assignment to <code>x</code>
+and another part of the expression uses <code>x</code>, the result is
+unpredictable because that use might be computed before or after the
+assignment.
+</p>
+<p>Here&rsquo;s an example of ambiguous code:
+</p>
+<div class="example">
+<pre class="example">x = 20;
+printf (&quot;%d %d\n&quot;, x, x = 4);
+</pre></div>
+
+<p>If the second argument, <code>x</code>, is computed before the third argument,
+<code>x = 4</code>, the second argument&rsquo;s value will be 20.  If they are
+computed in the other order, the second argument&rsquo;s value will be 4.
+</p>
+<p>Here&rsquo;s one way to make that code unambiguous:
+</p>
+<div class="example">
+<pre class="example">y = 20;
+printf (&quot;%d %d\n&quot;, y, x = 4);
+</pre></div>
+
+<p>Here&rsquo;s another way, with the other meaning:
+</p>
+<div class="example">
+<pre class="example">x = 4;
+printf (&quot;%d %d\n&quot;, x, x);
+</pre></div>
+
+<p>This issue applies to all kinds of assignments, and to the increment
+and decrement operators, which are equivalent to assignments.
+See <a href="Order-of-Execution.html">Order of Execution</a>, for more information about this.
+</p>
+<p>However, it can be useful to write assignments inside an
+<code>if</code>-condition or <code>while</code>-test along with logical operators.
+See <a href="Logicals-and-Assignments.html">Logicals and Assignments</a>.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Associativity-and-Ordering.html
===================================================================
--- public/doc/gnu-c/Associativity-and-Ordering.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Associativity-and-Ordering.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,103 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Associativity and Ordering (GNU C Language Manual)</title>
+
+<meta name="description" content="Associativity and Ordering (GNU C Language Manual)">
+<meta name="keywords" content="Associativity and Ordering (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Order-of-Execution.html" rel="up" title="Order of Execution">
+<link href="Sequence-Points.html" rel="next" title="Sequence Points">
+<link href="Reordering-of-Operands.html" rel="prev" title="Reordering of Operands">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Associativity-and-Ordering"></span><div class="header">
+<p>
+Next: <a href="Sequence-Points.html" accesskey="n" rel="next">Sequence Points</a>, Previous: <a href="Reordering-of-Operands.html" accesskey="p" rel="prev">Reordering of Operands</a>, Up: <a href="Order-of-Execution.html" accesskey="u" rel="up">Order of Execution</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>
+</div>
+<hr>
+<span id="Associativity-and-Ordering-1"></span><h3 class="section">10.2 Associativity and Ordering</h3>
+<span id="index-associativity-and-ordering"></span>
+
+<p>An associative binary operator, such as <code>+</code>, when used repeatedly
+can combine any number of operands.  The operands&rsquo; values may be
+computed in any order.
+</p>
+<p>If the values are integers and overflow can be ignored, they may be
+combined in any order.  Thus, given four functions that return
+<code>unsigned int</code>, calling them and adding their results as here
+</p>
+<div class="example">
+<pre class="example">(foo () + bar ()) + (baz () + quux ())
+</pre></div>
+
+<p>may add up the results in any order.
+</p>
+<p>By contrast, arithmetic on signed integers, with overflow significant,
+is not really associative (see <a href="Integer-Overflow.html">Integer Overflow</a>).  Thus, the
+additions must be done in the order specified, obeying parentheses and
+left-association.  That means computing <code>(foo () + bar ())</code> and
+<code>(baz () + quux ())</code> first (in either order), then adding the
+two.
+</p>
+<p>The same applies to arithmetic on floating-point values, since that
+too is not really associative.  However, the GCC option
+<samp>-funsafe-math-optimizations</samp> allows the compiler to change the
+order of calculation when an associative operation (associative in
+exact mathematics) combines several operands.  The option takes effect
+when compiling a module (see <a href="Compilation.html">Compilation</a>).  Changing the order
+of association can enable the program to pipeline the floating point
+operations.
+</p>
+<p>In all these cases, the four function calls can be done in any order.
+There is no right or wrong about that.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Attributes.html
===================================================================
--- public/doc/gnu-c/Attributes.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Attributes.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,159 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Attributes (GNU C Language Manual)</title>
+
+<meta name="description" content="Attributes (GNU C Language Manual)">
+<meta name="keywords" content="Attributes (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html" rel="up" title="Top">
+<link href="Signals.html" rel="next" title="Signals">
+<link href="Digraphs.html" rel="prev" title="Digraphs">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Attributes"></span><div class="header">
+<p>
+Next: <a href="Signals.html" accesskey="n" rel="next">Signals</a>, Previous: <a href="Digraphs.html" accesskey="p" rel="prev">Digraphs</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</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>
+</div>
+<hr>
+<span id="Attributes-in-Declarations"></span><h2 class="appendix">Appendix D Attributes in Declarations</h2>
+<span id="index-attributes"></span>
+<span id="index-_005f_005fattribute_005f_005f"></span>
+
+<p>You can specify certain additional requirements in a declaration, to
+get fine-grained control over code generation, and helpful
+informational messages during compilation.  We use a few attributes in
+code examples throughout this manual, including
+</p>
+<dl compact="compact">
+<dt><code>aligned</code></dt>
+<dd><p>The <code>aligned</code> attribute specifies a minimum alignment for a
+variable or structure field, measured in bytes:
+</p>
+<div class="example">
+<pre class="example">int foo __attribute__ ((aligned (8))) = 0;
+</pre></div>
+
+<p>This directs GNU C to allocate <code>foo</code> at an address that is a
+multiple of 8 bytes.  However, you can&rsquo;t force an alignment bigger
+than the computer&rsquo;s maximum meaningful alignment.
+</p>
+</dd>
+<dt><code>packed</code></dt>
+<dd><p>The <code>packed</code> attribute specifies to compact the fields of a
+structure by not leaving gaps between fields.  For example,
+</p>
+<div class="example">
+<pre class="example">struct __attribute__ ((packed)) bar
+{
+  char a;
+  int b;
+};
+</pre></div>
+
+<p>allocates the integer field <code>b</code> at byte 1 in the structure,
+immediately after the character field <code>a</code>.  The packed structure
+is just 5 bytes long (assuming <code>int</code> is 4 bytes) and its
+alignment is 1, that of <code>char</code>.
+</p>
+</dd>
+<dt><code>deprecated</code></dt>
+<dd><p>Applicable to both variables and functions, the <code>deprecated</code>
+attribute tells the compiler to issue a warning if the variable or
+function is ever used in the source file.
+</p>
+<div class="example">
+<pre class="example">int old_foo __attribute__ ((deprecated));
+
+int old_quux () __attribute__ ((deprecated));
+</pre></div>
+
+</dd>
+<dt><code>__noinline__</code></dt>
+<dd><p>The <code>__noinline__</code> attribute, in a function&rsquo;s declaration or
+definition, specifies never to inline calls to that function.  All
+calls to that function, in a compilation unit where it has this
+attribute, will be compiled to invoke the separately compiled
+function.  See <a href="Inline-Function-Definitions.html">Inline Function Definitions</a>.
+</p>
+</dd>
+<dt><code>__noclone__</code></dt>
+<dd><p>The <code>__noclone__</code> attribute, in a function&rsquo;s declaration or
+definition, specifies never to clone that function.  Thus, there will
+be only one compiled version of the function.  See <a href="Label-Value-Caveats.html">Label Value Caveats</a>, for more information about cloning.
+</p>
+</dd>
+<dt><code>always_inline</code></dt>
+<dd><p>The <code>always_inline</code> attribute, in a function&rsquo;s declaration or
+definition, specifies to inline all calls to that function (unless
+something about the function makes inlining impossible).  This applies
+to all calls to that function in a compilation unit where it has this
+attribute.  See <a href="Inline-Function-Definitions.html">Inline Function Definitions</a>.
+</p>
+</dd>
+<dt><code>gnu_inline</code></dt>
+<dd><p>The <code>gnu_inline</code> attribute, in a function&rsquo;s declaration or
+definition, specifies to handle the <code>inline</code> keywprd the way GNU
+C originally implemented it, many years before ISO C said anything
+about inlining.  See <a href="Inline-Function-Definitions.html">Inline Function Definitions</a>.
+</p></dd>
+</dl>
+
+<p>For full documentation of attributes, see the GCC manual.
+See <a href="https://gcc.gnu.org/onlinedocs/gcc/Attribute-Syntax.html#Attribute-Syntax">System Headers</a> in <cite>Using
+the GNU Compiler Collection</cite>.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Signals.html" accesskey="n" rel="next">Signals</a>, Previous: <a href="Digraphs.html" accesskey="p" rel="prev">Digraphs</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Auto-Type.html
===================================================================
--- public/doc/gnu-c/Auto-Type.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Auto-Type.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,103 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Auto Type (GNU C Language Manual)</title>
+
+<meta name="description" content="Auto Type (GNU C Language Manual)">
+<meta name="keywords" content="Auto Type (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Variables.html" rel="up" title="Variables">
+<link href="Local-Variables.html" rel="next" title="Local Variables">
+<link href="Designated-Inits.html" rel="prev" title="Designated Inits">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Auto-Type"></span><div class="header">
+<p>
+Next: <a href="Local-Variables.html" accesskey="n" rel="next">Local Variables</a>, Previous: <a href="Designated-Inits.html" accesskey="p" rel="prev">Designated Inits</a>, Up: <a href="Variables.html" accesskey="u" rel="up">Variables</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>
+</div>
+<hr>
+<span id="Referring-to-a-Type-with-_005f_005fauto_005ftype"></span><h3 class="section">20.4 Referring to a Type with <code>__auto_type</code></h3>
+<span id="index-_005f_005fauto_005ftype"></span>
+<span id="index-typeof"></span>
+<span id="index-macros_002c-types-of-arguments"></span>
+
+<p>You can declare a variable copying the type from
+the initializer by using <code>__auto_type</code> instead of a particular type.
+Here&rsquo;s an example:
+</p>
+<div class="example">
+<pre class="example">#define max(a,b) \
+  ({ __auto_type _a = (a); \
+      __auto_type _b = (b); \
+    _a &gt; _b ? _a : _b })
+</pre></div>
+
+<p>This defines <code>_a</code> to be of the same type as <code>a</code>, and
+<code>_b</code> to be of the same type as <code>b</code>.  This is a useful thing
+to do in a macro that ought to be able to handle any type of data
+(see <a href="Macros-and-Auto-Type.html">Macros and Auto Type</a>).
+</p>
+<p>The original GNU C method for obtaining the type of a value is to use
+<code>typeof</code>, which takes as an argument either a value or the name of
+a type.  The previous example could also be written as:
+</p>
+<div class="example">
+<pre class="example">#define max(a,b) \
+  ({ typeof(a) _a = (a); \
+      typeof(b) _b = (b); \
+    _a &gt; _b ? _a : _b })
+</pre></div>
+
+<p><code>typeof</code> is more flexible than <code>__auto_type</code>; however, the
+principal use case for <code>typeof</code> is in variable declarations with
+initialization, which is exactly what <code>__auto_type</code> handles.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Avoid-Comma.html
===================================================================
--- public/doc/gnu-c/Avoid-Comma.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Avoid-Comma.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,100 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Avoid Comma (GNU C Language Manual)</title>
+
+<meta name="description" content="Avoid Comma (GNU C Language Manual)">
+<meta name="keywords" content="Avoid Comma (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Comma-Operator.html" rel="up" title="Comma Operator">
+<link href="Binary-Operator-Grammar.html" rel="next" title="Binary Operator Grammar">
+<link href="Clean-Comma.html" rel="prev" title="Clean Comma">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Avoid-Comma"></span><div class="header">
+<p>
+Previous: <a href="Clean-Comma.html" accesskey="p" rel="prev">Clean Comma</a>, Up: <a href="Comma-Operator.html" accesskey="u" rel="up">Comma Operator</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>
+</div>
+<hr>
+<span id="When-Not-to-Use-the-Comma-Operator"></span><h4 class="subsection">8.5.3 When Not to Use the Comma Operator</h4>
+
+<p>You can use a comma in any subexpression, but in most cases it only
+makes the code confusing, and it is clearer to raise all but the last
+of the comma-separated expressions to a higher level.  Thus, instead
+of this:
+</p>
+<div class="example">
+<pre class="example">x = (y += 4, 8);
+</pre></div>
+
+<p>it is much clearer to write this:
+</p>
+<div class="example">
+<pre class="example">y += 4, x = 8;
+</pre></div>
+
+<p>or this:
+</p>
+<div class="example">
+<pre class="example">y += 4;
+x = 8;
+</pre></div>
+
+<p>Use commas only in the cases where there is no clearer alternative
+involving multiple statements.
+</p>
+<p>By contrast, don&rsquo;t hesitate to use commas in the expansion in a macro
+definition.  The trade-offs of code clarity are different in that
+case, because the <em>use</em> of the macro may improve overall clarity
+so much that the ugliness of the macro&rsquo;s <em>definition</em> is a small
+price to pay.  See <a href="Macros.html">Macros</a>.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Basic-Arithmetic.html
===================================================================
--- public/doc/gnu-c/Basic-Arithmetic.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Basic-Arithmetic.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,108 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Basic Arithmetic (GNU C Language Manual)</title>
+
+<meta name="description" content="Basic Arithmetic (GNU C Language Manual)">
+<meta name="keywords" content="Basic Arithmetic (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Arithmetic.html" rel="up" title="Arithmetic">
+<link href="Integer-Arithmetic.html" rel="next" title="Integer Arithmetic">
+<link href="Arithmetic.html" rel="prev" title="Arithmetic">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Basic-Arithmetic"></span><div class="header">
+<p>
+Next: <a href="Integer-Arithmetic.html" accesskey="n" rel="next">Integer Arithmetic</a>, Up: <a href="Arithmetic.html" accesskey="u" rel="up">Arithmetic</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>
+</div>
+<hr>
+<span id="Basic-Arithmetic-1"></span><h3 class="section">6.1 Basic Arithmetic</h3>
+<span id="index-addition-operator"></span>
+<span id="index-subtraction-operator"></span>
+<span id="index-multiplication-operator"></span>
+<span id="index-division-operator"></span>
+<span id="index-negation-operator"></span>
+<span id="index-operator_002c-addition"></span>
+<span id="index-operator_002c-subtraction"></span>
+<span id="index-operator_002c-multiplication"></span>
+<span id="index-operator_002c-division"></span>
+<span id="index-operator_002c-negation"></span>
+
+<p>Basic arithmetic in C is done with the usual binary operators of
+algebra: addition (&lsquo;<samp>+</samp>&rsquo;), subtraction (&lsquo;<samp>-</samp>&rsquo;), multiplication
+(&lsquo;<samp>*</samp>&rsquo;) and division (&lsquo;<samp>/</samp>&rsquo;).  The unary operator &lsquo;<samp>-</samp>&rsquo; is
+used to change the sign of a number.  The unary <code>+</code> operator also
+exists; it yields its operand unaltered.
+</p>
+<p>&lsquo;<samp>/</samp>&rsquo; is the division operator, but dividing integers may not give
+the result you expect.  Its value is an integer, which is not equal to
+the mathematical quotient when that is a fraction.  Use &lsquo;<samp>%</samp>&rsquo; to
+get the corresponding integer remainder when necessary.
+See <a href="Division-and-Remainder.html">Division and Remainder</a>.  Floating point division yields value
+as close as possible to the mathematical quotient.
+</p>
+<p>These operators use algebraic syntax with the usual algebraic
+precedence rule (see <a href="Binary-Operator-Grammar.html">Binary Operator Grammar</a>) that multiplication
+and division are done before addition and subtraction, but you can use
+parentheses to explicitly specify how the operators nest.  They are
+left-associative (see <a href="Associativity-and-Ordering.html">Associativity and Ordering</a>).  Thus,
+</p>
+<div class="example">
+<pre class="example">-a + b - c + d * e / f
+</pre></div>
+
+<p>is equivalent to
+</p>
+<div class="example">
+<pre class="example">(((-a) + b) - c) + ((d * e) / f)
+</pre></div>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Basic-Integers.html
===================================================================
--- public/doc/gnu-c/Basic-Integers.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Basic-Integers.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,120 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Basic Integers (GNU C Language Manual)</title>
+
+<meta name="description" content="Basic Integers (GNU C Language Manual)">
+<meta name="keywords" content="Basic Integers (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Integer-Types.html" rel="up" title="Integer Types">
+<link href="Signed-and-Unsigned-Types.html" rel="next" title="Signed and Unsigned Types">
+<link href="Integer-Types.html" rel="prev" title="Integer Types">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Basic-Integers"></span><div class="header">
+<p>
+Next: <a href="Signed-and-Unsigned-Types.html" accesskey="n" rel="next">Signed and Unsigned Types</a>, Up: <a href="Integer-Types.html" accesskey="u" rel="up">Integer Types</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>
+</div>
+<hr>
+<span id="Basic-Integers-1"></span><h4 class="subsection">11.1.1 Basic Integers</h4>
+
+<span id="index-char"></span>
+<span id="index-int"></span>
+<span id="index-short-int"></span>
+<span id="index-long-int"></span>
+<span id="index-long-long-int"></span>
+
+<p>Integer data types in C can be signed or unsigned.  An unsigned type
+can represent only positive numbers and zero.  A signed type can
+represent both positive and negative numbers, in a range spread almost
+equally on both sides of zero.
+</p>
+<p>Aside from signedness, the integer data types vary in size: how many
+bytes long they are.  The size determines how many different integer
+values the type can hold.
+</p>
+<p>Here&rsquo;s a list of the signed integer data types, with the sizes they
+have on most computers.  Each has a corresponding unsigned type; see
+<a href="Signed-and-Unsigned-Types.html">Signed and Unsigned Types</a>.
+</p>
+<dl compact="compact">
+<dt><code>signed char</code></dt>
+<dd><p>One byte (8 bits).  This integer type is used mainly for integers that
+represent characters, as part of arrays or other data structures.
+</p>
+</dd>
+<dt><code>short</code></dt>
+<dt><code>short int</code></dt>
+<dd><p>Two bytes (16 bits).
+</p>
+</dd>
+<dt><code>int</code></dt>
+<dd><p>Four bytes (32 bits).
+</p>
+</dd>
+<dt><code>long</code></dt>
+<dt><code>long int</code></dt>
+<dd><p>Four bytes (32 bits) or eight bytes (64 bits), depending on the
+platform.  Typically it is 32 bits on 32-bit computers
+and 64 bits on 64-bit computers, but there are exceptions.
+</p>
+</dd>
+<dt><code>long long</code></dt>
+<dt><code>long long int</code></dt>
+<dd><p>Eight bytes (64 bits).  Supported in GNU C in the 1980s, and
+incorporated into standard C as of ISO C99.
+</p></dd>
+</dl>
+
+<p>You can omit <code>int</code> when you use <code>long</code> or <code>short</code>.
+This is harmless and customary.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Beyond-Integers.html
===================================================================
--- public/doc/gnu-c/Beyond-Integers.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Beyond-Integers.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,84 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Beyond Integers (GNU C Language Manual)</title>
+
+<meta name="description" content="Beyond Integers (GNU C Language Manual)">
+<meta name="keywords" content="Beyond Integers (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html" rel="up" title="Top">
+<link href="Float-Example.html" rel="next" title="Float Example">
+<link href="Storage.html" rel="prev" title="Storage">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Beyond-Integers"></span><div class="header">
+<p>
+Next: <a href="Lexical-Syntax.html" accesskey="n" rel="next">Lexical Syntax</a>, Previous: <a href="Storage.html" accesskey="p" rel="prev">Storage</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</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>
+</div>
+<hr>
+<span id="Beyond-Integers-1"></span><h2 class="chapter">4 Beyond Integers</h2>
+
+<p>So far we&rsquo;ve presented programs that operate on integers.  In this
+chapter we&rsquo;ll present examples of handling non-integral numbers and
+arrays of numbers.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Float-Example.html" accesskey="1">Float Example</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">A function that uses floating-point numbers.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Array-Example.html" accesskey="2">Array Example</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">A function that works with arrays.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Array-Example-Call.html" accesskey="3">Array Example Call</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to call that function.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Array-Example-Variations.html" accesskey="4">Array Example Variations</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Different ways to write the call example.
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Binary-Operator-Grammar.html
===================================================================
--- public/doc/gnu-c/Binary-Operator-Grammar.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Binary-Operator-Grammar.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,167 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Binary Operator Grammar (GNU C Language Manual)</title>
+
+<meta name="description" content="Binary Operator Grammar (GNU C Language Manual)">
+<meta name="keywords" content="Binary Operator Grammar (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html" rel="up" title="Top">
+<link href="Order-of-Execution.html" rel="next" title="Order of Execution">
+<link href="Avoid-Comma.html" rel="prev" title="Avoid Comma">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Binary-Operator-Grammar"></span><div class="header">
+<p>
+Next: <a href="Order-of-Execution.html" accesskey="n" rel="next">Order of Execution</a>, Previous: <a href="Execution-Control-Expressions.html" accesskey="p" rel="prev">Execution Control Expressions</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</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>
+</div>
+<hr>
+<span id="Binary-Operator-Grammar-1"></span><h2 class="chapter">9 Binary Operator Grammar</h2>
+<span id="index-binary-operator-grammar"></span>
+<span id="index-grammar_002c-binary-operator"></span>
+<span id="index-operator-precedence"></span>
+<span id="index-precedence_002c-operator"></span>
+<span id="index-left_002dassociative"></span>
+
+<p><em>Binary operators</em> are those that take two operands, one
+on the left and one on the right.
+</p>
+<p>All the binary operators in C are syntactically left-associative.
+This means that <code>a&nbsp;<var>op</var>&nbsp;b&nbsp;<var>op</var>&nbsp;c</code><!-- /@w --> means <code>(a&nbsp;<var>op</var>&nbsp;b)&nbsp;<var>op</var>&nbsp;c</code><!-- /@w -->.  However, you should only write repeated
+operators without parentheses using &lsquo;<samp>+</samp>&rsquo;, &lsquo;<samp>-</samp>&rsquo;, &lsquo;<samp>*</samp>&rsquo; and
+&lsquo;<samp>/</samp>&rsquo;, because those cases are clear from algebra.  So it is ok to
+write <code>a + b + c</code> or <code>a - b - c</code>, but never <code>a == b ==
+c</code> or <code>a % b % c</code>.
+</p>
+<p>Each C operator has a <em>precedence</em>, which is its rank in the
+grammatical order of the various operators.  The operators with the
+highest precedence grab adjoining operands first; these expressions
+then become operands for operators of lower precedence.
+</p>
+<p>The precedence order of operators in C is fully specified, so any
+combination of operations leads to a well-defined nesting.  We state
+only part of the full precedence ordering here because it is bad
+practice for C code to depend on the other cases.  For cases not
+specified in this chapter, always use parentheses to make the nesting
+explicit.<a id="DOCF2" href="#FOOT2"><sup>2</sup></a>
+</p>
+<p>You can depend on this subsequence of the precedence ordering
+(stated from highest precedence to lowest):
+</p>
+<ol>
+<li> Component access (&lsquo;<samp>.</samp>&rsquo; and &lsquo;<samp>-&gt;</samp>&rsquo;).
+
+</li><li> Unary prefix operators.
+
+</li><li> Unary postfix operators.
+
+</li><li> Multiplication, division, and remainder (they have the same precedence).
+
+</li><li> Addition and subtraction (they have the same precedence).
+
+</li><li> Comparisons&mdash;but watch out!
+
+</li><li> Logical operators &lsquo;<samp>&amp;&amp;</samp>&rsquo; and &lsquo;<samp>||</samp>&rsquo;&mdash;but watch out!
+
+</li><li> Conditional expression with &lsquo;<samp>?</samp>&rsquo; and &lsquo;<samp>:</samp>&rsquo;.
+
+</li><li> Assignments.
+
+</li><li> Sequential execution (the comma operator, &lsquo;<samp>,</samp>&rsquo;).
+</li></ol>
+
+<p>Two of the lines in the above list say &ldquo;but watch out!&rdquo;  That means
+that the line covers operators with subtly different precedence.
+Never depend on the grammar of C to decide how two comparisons nest;
+instead, always use parentheses to specify their nesting.
+</p>
+<p>You can let several &lsquo;<samp>&amp;&amp;</samp>&rsquo; operators associate, or several
+&lsquo;<samp>||</samp>&rsquo; operators, but always use parentheses to show how &lsquo;<samp>&amp;&amp;</samp>&rsquo;
+and &lsquo;<samp>||</samp>&rsquo; nest with each other.  See <a href="Logical-Operators.html">Logical Operators</a>.
+</p>
+<p>There is one other precedence ordering that code can depend on:
+</p>
+<ol>
+<li> Unary postfix operators.
+
+</li><li> Bitwise and shift operators&mdash;but watch out!
+
+</li><li> Conditional expression with &lsquo;<samp>?</samp>&rsquo; and &lsquo;<samp>:</samp>&rsquo;.
+</li></ol>
+
+<p>The caveat for bitwise and shift operators is like that for logical
+operators: you can let multiple uses of one bitwise operator
+associate, but always use parentheses to control nesting of dissimilar
+operators.
+</p>
+<p>These lists do not specify any precedence ordering between the bitwise
+and shift operators of the second list and the binary operators above
+conditional expressions in the first list.  When they come together,
+parenthesize them.  See <a href="Bitwise-Operations.html">Bitwise Operations</a>.
+</p>
+<div class="footnote">
+<hr>
+<h4 class="footnotes-heading">Footnotes</h4>
+
+<h5><a id="FOOT2" href="#DOCF2">(2)</a></h3>
+<p>Personal note from Richard Stallman: I wrote GCC without
+remembering anything about the C precedence order beyond what&rsquo;s stated
+here.  I studied the full precedence table to write the parser, and
+promptly forgot it again.  If you need to look up the full precedence order
+to understand some C code, fix the code with parentheses so nobody else
+needs to do that.</p>
+</div>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Order-of-Execution.html" accesskey="n" rel="next">Order of Execution</a>, Previous: <a href="Execution-Control-Expressions.html" accesskey="p" rel="prev">Execution Control Expressions</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Bit-Field-Packing.html
===================================================================
--- public/doc/gnu-c/Bit-Field-Packing.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Bit-Field-Packing.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,130 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Bit Field Packing (GNU C Language Manual)</title>
+
+<meta name="description" content="Bit Field Packing (GNU C Language Manual)">
+<meta name="keywords" content="Bit Field Packing (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Structures.html" rel="up" title="Structures">
+<link href="const-Fields.html" rel="next" title="const Fields">
+<link href="Bit-Fields.html" rel="prev" title="Bit Fields">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Bit-Field-Packing"></span><div class="header">
+<p>
+Next: <a href="const-Fields.html" accesskey="n" rel="next">const Fields</a>, Previous: <a href="Bit-Fields.html" accesskey="p" rel="prev">Bit Fields</a>, Up: <a href="Structures.html" accesskey="u" rel="up">Structures</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>
+</div>
+<hr>
+<span id="Bit-Field-Packing-1"></span><h3 class="section">15.7 Bit Field Packing</h3>
+
+<p>Programs to communicate with low-level hardware interfaces need to
+define bit fields laid out to match the hardware data.  This section
+explains how to do that.
+</p>
+<p>Consecutive bit fields are packed together, but each bit field must
+fit within a single object of its specified type.  In this example,
+</p>
+<div class="example">
+<pre class="example">unsigned short a : 3, b : 3, c : 3, d : 3, e : 3;
+</pre></div>
+
+<p>all five fields fit consecutively into one two-byte <code>short</code>.
+They need 15 bits, and one <code>short</code> provides 16.  By contrast,
+</p>
+<div class="example">
+<pre class="example">unsigned char a : 3, b : 3, c : 3, d : 3, e : 3;
+</pre></div>
+
+<p>needs three bytes.  It fits <code>a</code> and <code>b</code> into one
+<code>char</code>, but <code>c</code> won&rsquo;t fit in that <code>char</code> (they would
+add up to 9 bits).  So <code>c</code> and <code>d</code> go into a second
+<code>char</code>, leaving a gap of two bits between <code>b</code> and <code>c</code>.
+Then <code>e</code> needs a third <code>char</code>.  By contrast,
+</p>
+<div class="example">
+<pre class="example">unsigned char a : 3, b : 3;
+unsigned int c : 3;
+unsigned char d : 3, e : 3;
+</pre></div>
+
+<p>needs only two bytes: the type <code>unsigned int</code>
+allows <code>c</code> to straddle bytes that are in the same word.
+</p>
+<p>You can leave a gap of a specified number of bits by defining a
+nameless bit field.  This looks like <code><var>type</var> : <var>nbits</var>;</code>.
+It is allocated space in the structure just as a named bit field would
+be allocated.
+</p>
+<p>You can force the following bit field to advance to the following
+aligned memory object with <code><var>type</var> : 0;</code>.
+</p>
+<p>Both of these constructs can syntactically share <var>type</var> with
+ordinary bit fields.  This example illustrates both:
+</p>
+<div class="example">
+<pre class="example">unsigned int a : 5, : 3, b : 5, : 0, c : 5, : 3, d : 5;
+</pre></div>
+
+<p>It puts <code>a</code> and <code>b</code> into one <code>int</code>, with a 3-bit gap
+between them.  Then <code>: 0</code> advances to the next <code>int</code>,
+so <code>c</code> and <code>d</code> fit into that one.
+</p>
+<p>These rules for packing bit fields apply to most target platforms,
+including all the usual real computers.  A few embedded controllers
+have special layout rules.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="const-Fields.html" accesskey="n" rel="next">const Fields</a>, Previous: <a href="Bit-Fields.html" accesskey="p" rel="prev">Bit Fields</a>, Up: <a href="Structures.html" accesskey="u" rel="up">Structures</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Bit-Fields.html
===================================================================
--- public/doc/gnu-c/Bit-Fields.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Bit-Fields.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,128 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Bit Fields (GNU C Language Manual)</title>
+
+<meta name="description" content="Bit Fields (GNU C Language Manual)">
+<meta name="keywords" content="Bit Fields (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Structures.html" rel="up" title="Structures">
+<link href="Bit-Field-Packing.html" rel="next" title="Bit Field Packing">
+<link href="Packed-Structures.html" rel="prev" title="Packed Structures">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Bit-Fields"></span><div class="header">
+<p>
+Next: <a href="Bit-Field-Packing.html" accesskey="n" rel="next">Bit Field Packing</a>, Previous: <a href="Packed-Structures.html" accesskey="p" rel="prev">Packed Structures</a>, Up: <a href="Structures.html" accesskey="u" rel="up">Structures</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>
+</div>
+<hr>
+<span id="Bit-Fields-1"></span><h3 class="section">15.6 Bit Fields</h3>
+<span id="index-bit-fields"></span>
+
+<p>A structure field declaration with an integer type can specify the
+number of bits the field should occupy.  We call that a <em>bit
+field</em>.  These are useful because consecutive bit fields are packed
+into a larger storage unit.  For instance,
+</p>
+<div class="example">
+<pre class="example">unsigned char opcode: 4;
+</pre></div>
+
+<p>specifies that this field takes just 4 bits.
+Since it is unsigned, its possible values range
+from 0 to 15.  A signed field with 4 bits, such as this,
+</p>
+<div class="example">
+<pre class="example">signed char small: 4;
+</pre></div>
+
+<p>can hold values from -8 to 7.
+</p>
+<p>You can subdivide a single byte into those two parts by writing
+</p>
+<div class="example">
+<pre class="example">unsigned char opcode: 4;
+signed char small: 4;
+</pre></div>
+
+<p>in the structure.  With bit fields, these two numbers fit into
+a single <code>char</code>.
+</p>
+<p>Here&rsquo;s how to declare a one-bit field that can hold either 0 or 1:
+</p>
+<div class="example">
+<pre class="example">unsigned char special_flag: 1;
+</pre></div>
+
+<p>You can also use the <code>bool</code> type for bit fields:
+</p>
+<div class="example">
+<pre class="example">bool special_flag: 1;
+</pre></div>
+
+<p>Except when using <code>bool</code> (which is always unsigned,
+see <a href="Boolean-Type.html">Boolean Type</a>), always specify <code>signed</code> or <code>unsigned</code>
+for a bit field.  There is a default, if that&rsquo;s not specified: the bit
+field is signed if plain <code>char</code> is signed, except that the option
+<samp>-funsigned-bitfields</samp> forces unsigned as the default.  But it
+is cleaner not to depend on this default.
+</p>
+<p>Bit fields are special in that you cannot take their address with
+&lsquo;<samp>&amp;</samp>&rsquo;.  They are not stored with the size and alignment appropriate
+for the specified type, so they cannot be addressed through pointers
+to that type.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Bit-Field-Packing.html" accesskey="n" rel="next">Bit Field Packing</a>, Previous: <a href="Packed-Structures.html" accesskey="p" rel="prev">Packed Structures</a>, Up: <a href="Structures.html" accesskey="u" rel="up">Structures</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Bits-Shifted-In.html
===================================================================
--- public/doc/gnu-c/Bits-Shifted-In.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Bits-Shifted-In.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,104 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Bits Shifted In (GNU C Language Manual)</title>
+
+<meta name="description" content="Bits Shifted In (GNU C Language Manual)">
+<meta name="keywords" content="Bits Shifted In (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Shift-Operations.html" rel="up" title="Shift Operations">
+<link href="Shift-Caveats.html" rel="next" title="Shift Caveats">
+<link href="Shift-Operations.html" rel="prev" title="Shift Operations">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Bits-Shifted-In"></span><div class="header">
+<p>
+Next: <a href="Shift-Caveats.html" accesskey="n" rel="next">Shift Caveats</a>, Up: <a href="Shift-Operations.html" accesskey="u" rel="up">Shift Operations</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>
+</div>
+<hr>
+<span id="Shifting-Makes-New-Bits"></span><h4 class="subsection">6.7.1 Shifting Makes New Bits</h4>
+
+<p>A shift operation shifts towards one end of the number and has to
+generate new bits at the other end.
+</p>
+<p>Shifting left one bit must generate a new least significant bit.  It
+always brings in zero there.  It is equivalent to multiplying by the
+appropriate power of 2.  For example,
+</p>
+<div class="example">
+<pre class="example">5 &lt;&lt; 3     <span class="roman">is equivalent to</span>   5 * 2*2*2
+-10 &lt;&lt; 4   <span class="roman">is equivalent to</span>   -10 * 2*2*2*2
+</pre></div>
+
+<p>The meaning of shifting right depends on whether the data type is
+signed or unsigned (see <a href="Signed-and-Unsigned-Types.html">Signed and Unsigned Types</a>).  For a signed
+data type, it performs &ldquo;arithmetic shift,&rdquo; which keeps the number&rsquo;s
+sign unchanged by duplicating the sign bit.  For an unsigned data
+type, it performs &ldquo;logical shift,&rdquo; which always shifts in zeros at
+the most significant bit.
+</p>
+<p>In both cases, shifting right one bit is division by two, rounding
+towards negative infinity.  For example,
+</p>
+<div class="example">
+<pre class="example">(unsigned) 19 &gt;&gt; 2 &rArr; 4
+(unsigned) 20 &gt;&gt; 2 &rArr; 5
+(unsigned) 21 &gt;&gt; 2 &rArr; 5
+</pre></div>
+
+<p>For negative left operand <code>a</code>, <code>a &gt;&gt; 1</code> is not equivalent to
+<code>a / 2</code>.  They both divide by 2, but &lsquo;<samp>/</samp>&rsquo; rounds toward
+zero.
+</p>
+<p>The shift count must be zero or greater.  Shifting by a negative
+number of bits gives machine-dependent results.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Bitwise-Operations.html
===================================================================
--- public/doc/gnu-c/Bitwise-Operations.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Bitwise-Operations.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,165 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Bitwise Operations (GNU C Language Manual)</title>
+
+<meta name="description" content="Bitwise Operations (GNU C Language Manual)">
+<meta name="keywords" content="Bitwise Operations (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Arithmetic.html" rel="up" title="Arithmetic">
+<link href="Assignment-Expressions.html" rel="next" title="Assignment Expressions">
+<link href="Shift-Hacks.html" rel="prev" title="Shift Hacks">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Bitwise-Operations"></span><div class="header">
+<p>
+Previous: <a href="Shift-Operations.html" accesskey="p" rel="prev">Shift Operations</a>, Up: <a href="Arithmetic.html" accesskey="u" rel="up">Arithmetic</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>
+</div>
+<hr>
+<span id="Bitwise-Operations-1"></span><h3 class="section">6.8 Bitwise Operations</h3>
+<span id="index-bitwise-operators"></span>
+<span id="index-operators_002c-bitwise"></span>
+<span id="index-negation_002c-bitwise"></span>
+<span id="index-conjunction_002c-bitwise"></span>
+<span id="index-disjunction_002c-bitwise"></span>
+
+<p>Bitwise operators operate on integers, treating each bit independently.
+They are not allowed for floating-point types.
+</p>
+<p>The examples in this section use binary constants, starting with
+&lsquo;<samp>0b</samp>&rsquo; (see <a href="Integer-Constants.html">Integer Constants</a>).  They stand for 32-bit integers
+of type <code>int</code>.
+</p>
+<dl compact="compact">
+<dt><code>~<code>a</code></code></dt>
+<dd><p>Unary operator for bitwise negation; this changes each bit of
+<code>a</code> from 1 to 0 or from 0 to 1.
+</p>
+<div class="example">
+<pre class="example">~0b10101000 &rArr; 0b11111111111111111111111101010111
+~0 &rArr; 0b11111111111111111111111111111111
+~0b11111111111111111111111111111111 &rArr; 0
+~ (-1) &rArr; 0
+</pre></div>
+
+<p>It is useful to remember that <code>~<var>x</var> + 1</code> equals
+<code>-<var>x</var></code>, for integers, and <code>~<var>x</var></code> equals
+<code>-<var>x</var> - 1</code>.  The last example above shows this with -1
+as <var>x</var>.
+</p>
+</dd>
+<dt><code><code>a</code> &amp; <code>b</code></code></dt>
+<dd><p>Binary operator for bitwise &ldquo;and&rdquo; or &ldquo;conjunction.&rdquo;  Each bit in
+the result is 1 if that bit is 1 in both <code>a</code> and <code>b</code>.
+</p>
+<div class="example">
+<pre class="example">0b10101010 &amp; 0b11001100 &rArr; 0b10001000
+</pre></div>
+
+</dd>
+<dt><code><code>a</code> | <code>b</code></code></dt>
+<dd><p>Binary operator for bitwise &ldquo;or&rdquo; (&ldquo;inclusive or&rdquo; or
+&ldquo;disjunction&rdquo;).  Each bit in the result is 1 if that bit is 1 in
+either <code>a</code> or <code>b</code>.
+</p>
+<div class="example">
+<pre class="example">0b10101010 | 0b11001100 &rArr; 0b11101110
+</pre></div>
+
+</dd>
+<dt><code><code>a</code> ^ <code>b</code></code></dt>
+<dd><p>Binary operator for bitwise &ldquo;xor&rdquo; (&ldquo;exclusive or&rdquo;).  Each bit in
+the result is 1 if that bit is 1 in exactly one of <code>a</code> and <code>b</code>.
+</p>
+<div class="example">
+<pre class="example">0b10101010 ^ 0b11001100 &rArr; 0b01100110
+</pre></div>
+</dd>
+</dl>
+
+<p>To understand the effect of these operators on signed integers, keep
+in mind that all modern computers use two&rsquo;s-complement representation
+(see <a href="Integer-Representations.html">Integer Representations</a>) for negative integers.  This means
+that the highest bit of the number indicates the sign; it is 1 for a
+negative number and 0 for a positive number.  In a negative number,
+the value in the other bits <em>increases</em> as the number gets closer
+to zero, so that <code>0b111<span class="roman">&hellip;</span>111</code> is -1 and
+<code>0b100<span class="roman">&hellip;</span>000</code> is the most negative possible integer.
+</p>
+<p><strong>Warning:</strong> C defines a precedence ordering for the bitwise
+binary operators, but you should never rely on it.   You should
+never rely on how bitwise binary operators relate in precedence to the
+arithmetic and shift binary operators.  Other programmers don&rsquo;t
+remember this precedence ordering, so always use parentheses to
+explicitly specify the nesting.
+</p>
+<p>For example, suppose <code>offset</code> is an integer that specifies
+the offset within shared memory of a table, except that its bottom few
+bits (<code>LOWBITS</code> says how many) are special flags.  Here&rsquo;s
+how to get just that offset and add it to the base address.
+</p>
+<div class="example">
+<pre class="example">shared_mem_base + (offset &amp; (-1 &lt;&lt; LOWBITS))
+</pre></div>
+
+<p>Thanks to the outer set of parentheses, we don&rsquo;t need to know whether
+&lsquo;<samp>&amp;</samp>&rsquo; has higher precedence than &lsquo;<samp>+</samp>&rsquo;.  Thanks to the inner
+set, we don&rsquo;t need to know whether &lsquo;<samp>&amp;</samp>&rsquo; has higher precedence than
+&lsquo;<samp>&lt;&lt;</samp>&rsquo;.  But we can rely on all unary operators to have higher
+precedence than any binary operator, so we don&rsquo;t need parentheses
+around the left operand of &lsquo;<samp>&lt;&lt;</samp>&rsquo;.
+</p>
+<hr>
+<div class="header">
+<p>
+Previous: <a href="Shift-Operations.html" accesskey="p" rel="prev">Shift Operations</a>, Up: <a href="Arithmetic.html" accesskey="u" rel="up">Arithmetic</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Blocks.html
===================================================================
--- public/doc/gnu-c/Blocks.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Blocks.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,142 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Blocks (GNU C Language Manual)</title>
+
+<meta name="description" content="Blocks (GNU C Language Manual)">
+<meta name="keywords" content="Blocks (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Statements.html" rel="up" title="Statements">
+<link href="return-Statement.html" rel="next" title="return Statement">
+<link href="if_002delse-Statement.html" rel="prev" title="if-else Statement">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Blocks"></span><div class="header">
+<p>
+Next: <a href="return-Statement.html" accesskey="n" rel="next">return Statement</a>, Previous: <a href="if_002delse-Statement.html" accesskey="p" rel="prev">if-else Statement</a>, Up: <a href="Statements.html" accesskey="u" rel="up">Statements</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>
+</div>
+<hr>
+<span id="Blocks-1"></span><h3 class="section">19.4 Blocks</h3>
+<span id="index-block"></span>
+<span id="index-compound-statement"></span>
+
+<p>A <em>block</em> is a construct that contains multiple statements of any
+kind.  It begins with &lsquo;<samp>{</samp>&rsquo; and ends with &lsquo;<samp>}</samp>&rsquo;, and has a
+series of statements and declarations in between.  Another name for
+blocks is <em>compound statements</em>.
+</p>
+<p>Is a block a statement?  Yes and no.  It doesn&rsquo;t <em>look</em> like a
+normal statement&mdash;it does not end with a semicolon.  But you can
+<em>use</em> it like a statement; anywhere that a statement is required
+or allowed, you can write a block and consider that block a statement.
+</p>
+<p>So far it seems that a block is a kind of statement with an unusual
+syntax.  But that is not entirely true: a function body is also a
+block, and that block is definitely not a statement.  The text after a
+function header is not treated as a statement; only a function body is
+allowed there, and nothing else would be meaningful there.
+</p>
+<p>In a formal grammar we would have to choose&mdash;either a block is a kind
+of statement or it is not.  But this manual is meant for humans, not
+for parser generators.  The clearest answer for humans is, &ldquo;a block
+is a statement, in some ways.&rdquo;
+</p>
+<span id="index-nested-block"></span>
+<span id="index-internal-block"></span>
+<p>A block that isn&rsquo;t a function body is called an <em>internal block</em>
+or a <em>nested block</em>.  You can put a nested block directly inside
+another block, but more often the nested block is inside some complex
+statement, such as a <code>for</code> statement or an <code>if</code> statement.
+</p>
+<p>There are two uses for nested blocks in C:
+</p>
+<ul>
+<li> To specify the scope for local declarations.  For instance, a local
+variable&rsquo;s scope is the rest of the innermost containing block.
+
+</li><li> To write a series of statements where, syntactically, one statement is
+called for.  For instance, the <var>execute-if-true</var> of an <code>if</code>
+statement is one statement.  To put multiple statements there, they
+have to be wrapped in a block, like this:
+
+<div class="example">
+<pre class="example">if (x &lt; 0)
+  {
+    printf (&quot;x was negative\n&quot;);
+    x = -x;
+  }
+</pre></div>
+</li></ul>
+
+<p>This example (repeated from above) shows a nested block which serves
+both purposes: it includes two statements (plus a declaration) in the
+body of a <code>while</code> statement, and it provides the scope for the
+declaration of <code>q</code>.
+</p>
+<div class="example">
+<pre class="example">void
+free_intlist (struct intlistlink *p)
+{
+  while (p)
+    {
+      struct intlistlink *q = p;
+      p = p-&gt;next;
+      free (q);
+    }
+}
+</pre></div>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="return-Statement.html" accesskey="n" rel="next">return Statement</a>, Previous: <a href="if_002delse-Statement.html" accesskey="p" rel="prev">if-else Statement</a>, Up: <a href="Statements.html" accesskey="u" rel="up">Statements</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Boolean-Type.html
===================================================================
--- public/doc/gnu-c/Boolean-Type.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Boolean-Type.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,85 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Boolean Type (GNU C Language Manual)</title>
+
+<meta name="description" content="Boolean Type (GNU C Language Manual)">
+<meta name="keywords" content="Boolean Type (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Integer-Types.html" rel="up" title="Integer Types">
+<link href="Integer-Variations.html" rel="next" title="Integer Variations">
+<link href="Integer-Conversion.html" rel="prev" title="Integer Conversion">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Boolean-Type"></span><div class="header">
+<p>
+Next: <a href="Integer-Variations.html" accesskey="n" rel="next">Integer Variations</a>, Previous: <a href="Integer-Conversion.html" accesskey="p" rel="prev">Integer Conversion</a>, Up: <a href="Integer-Types.html" accesskey="u" rel="up">Integer Types</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>
+</div>
+<hr>
+<span id="Boolean-Type-1"></span><h4 class="subsection">11.1.5 Boolean Type</h4>
+<span id="index-boolean-type"></span>
+<span id="index-type_002c-boolean"></span>
+<span id="index-bool"></span>
+
+<p>The unsigned integer type <code>bool</code> holds truth values: its possible
+values are 0 and 1.  Converting any nonzero value to <code>bool</code>
+results in 1.  For example:
+</p>
+<div class="example">
+<pre class="example">bool a = 0;
+bool b = 1;
+bool c = 4; /* <span class="roman">Stores the value 1 in <code>c</code>.</span>  */
+</pre></div>
+
+<p>Unlike <code>int</code>, <code>bool</code> is not a keyword.  It is defined in
+the header file <samp>stdbool.h</samp>.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Calling-Function-Pointers.html
===================================================================
--- public/doc/gnu-c/Calling-Function-Pointers.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Calling-Function-Pointers.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,95 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Calling Function Pointers (GNU C Language Manual)</title>
+
+<meta name="description" content="Calling Function Pointers (GNU C Language Manual)">
+<meta name="keywords" content="Calling Function Pointers (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Function-Pointers.html" rel="up" title="Function Pointers">
+<link href="The-main-Function.html" rel="next" title="The main Function">
+<link href="Assigning-Function-Pointers.html" rel="prev" title="Assigning Function Pointers">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Calling-Function-Pointers"></span><div class="header">
+<p>
+Previous: <a href="Assigning-Function-Pointers.html" accesskey="p" rel="prev">Assigning Function Pointers</a>, Up: <a href="Function-Pointers.html" accesskey="u" rel="up">Function Pointers</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>
+</div>
+<hr>
+<span id="Calling-Function-Pointers-1"></span><h4 class="subsection">22.5.3 Calling Function Pointers</h4>
+<span id="index-calling-function-pointers"></span>
+<span id="index-function-pointers_002c-calling"></span>
+
+<p>To call the function specified by a function pointer, just write the
+function pointer value in a function call.  For instance, here&rsquo;s a
+call to the function <code>binary_op</code> points to:
+</p>
+<div class="example">
+<pre class="example">binary_op (x, 5)
+</pre></div>
+
+<p>Since the data type of <code>binary_op</code> explicitly specifies type
+<code>double</code> for the arguments, the call converts <code>x</code> and 5 to
+<code>double</code>.
+</p>
+<p>The call conceptually dereferences the pointer <code>binary_op</code> to
+&ldquo;get&rdquo; the function it points to, and calls that function.  If you
+wish, you can explicitly represent the derefence by writing the
+<code>*</code> operator:
+</p>
+<div class="example">
+<pre class="example">(*binary_op) (x, 5)
+</pre></div>
+
+<p>The &lsquo;<samp>*</samp>&rsquo; reminds people reading the code that <code>binary_op</code> is
+a function pointer rather than the name of a specific function.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Case-Ranges.html
===================================================================
--- public/doc/gnu-c/Case-Ranges.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Case-Ranges.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,100 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Case Ranges (GNU C Language Manual)</title>
+
+<meta name="description" content="Case Ranges (GNU C Language Manual)">
+<meta name="keywords" content="Case Ranges (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Statements.html" rel="up" title="Statements">
+<link href="Null-Statement.html" rel="next" title="Null Statement">
+<link href="Duffs-Device.html" rel="prev" title="Duffs Device">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Case-Ranges"></span><div class="header">
+<p>
+Next: <a href="Null-Statement.html" accesskey="n" rel="next">Null Statement</a>, Previous: <a href="Duffs-Device.html" accesskey="p" rel="prev">Duffs Device</a>, Up: <a href="Statements.html" accesskey="u" rel="up">Statements</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>
+</div>
+<hr>
+<span id="Case-Ranges-1"></span><h3 class="section">19.10 Case Ranges</h3>
+<span id="index-case-ranges"></span>
+<span id="index-ranges-in-case-statements"></span>
+
+<p>You can specify a range of consecutive values in a single <code>case</code> label,
+like this:
+</p>
+<div class="example">
+<pre class="example">case <var>low</var> ... <var>high</var>:
+</pre></div>
+
+<p>This has the same effect as the proper number of individual <code>case</code>
+labels, one for each integer value from <var>low</var> to <var>high</var>, inclusive.
+</p>
+<p>This feature is especially useful for ranges of ASCII character codes:
+</p>
+<div class="example">
+<pre class="example">case 'A' ... 'Z':
+</pre></div>
+
+<p><strong>Be careful:</strong> with integers, write spaces around the <code>...</code>
+to prevent it from being parsed wrong.  For example, write this:
+</p>
+<div class="example">
+<pre class="example">case 1 ... 5:
+</pre></div>
+
+<p>rather than this:
+</p>
+<div class="example">
+<pre class="example">case 1...5:
+</pre></div>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Cast-to-Union.html
===================================================================
--- public/doc/gnu-c/Cast-to-Union.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Cast-to-Union.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,111 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Cast to Union (GNU C Language Manual)</title>
+
+<meta name="description" content="Cast to Union (GNU C Language Manual)">
+<meta name="keywords" content="Cast to Union (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Structures.html" rel="up" title="Structures">
+<link href="Structure-Constructors.html" rel="next" title="Structure Constructors">
+<link href="Packing-With-Unions.html" rel="prev" title="Packing With Unions">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Cast-to-Union"></span><div class="header">
+<p>
+Next: <a href="Structure-Constructors.html" accesskey="n" rel="next">Structure Constructors</a>, Previous: <a href="Packing-With-Unions.html" accesskey="p" rel="prev">Packing With Unions</a>, Up: <a href="Structures.html" accesskey="u" rel="up">Structures</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>
+</div>
+<hr>
+<span id="Cast-to-a-Union-Type"></span><h3 class="section">15.15 Cast to a Union Type</h3>
+<span id="index-cast-to-a-union"></span>
+<span id="index-union_002c-casting-to-a"></span>
+
+<p>In GNU C, you can explicitly cast any of the alternative types to the
+union type; for instance,
+</p>
+<div class="example">
+<pre class="example">(union eight_bytes) (long long) 5
+</pre></div>
+
+<p>makes a value of type <code>union eight_bytes</code> which gets its contents
+through the alternative named <code>big_int_elt</code>.
+</p>
+<p>The value being cast must exactly match the type of the alternative,
+so this is not valid:
+</p>
+<div class="example">
+<pre class="example">(union eight_bytes) 5  /* <span class="roman">Error!  5 is <code>int</code>.</span> */
+</pre></div>
+
+<p>A cast to union type looks like any other cast, except that the type
+specified is a union type.  You can specify the type either with
+<code>union <var>tag</var></code> or with a typedef name (see <a href="Defining-Typedef-Names.html">Defining Typedef Names</a>).
+</p>
+<p>Using the cast as the right-hand side of an assignment to a variable of
+union type is equivalent to storing in an alternative of the union:
+</p>
+<div class="example">
+<pre class="example">union foo u;
+
+u = (union foo) x   <span class="roman">means</span>   u.i = x
+
+u = (union foo) y   <span class="roman">means</span>   u.d = y
+</pre></div>
+
+<p>You can also use the union cast as a function argument:
+</p>
+<div class="example">
+<pre class="example">void hack (union foo);
+<span class="roman">&hellip;</span>
+hack ((union foo) x);
+</pre></div>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Character-Constants.html
===================================================================
--- public/doc/gnu-c/Character-Constants.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Character-Constants.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,141 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Character Constants (GNU C Language Manual)</title>
+
+<meta name="description" content="Character Constants (GNU C Language Manual)">
+<meta name="keywords" content="Character Constants (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Constants.html" rel="up" title="Constants">
+<link href="String-Constants.html" rel="next" title="String Constants">
+<link href="Invalid-Numbers.html" rel="prev" title="Invalid Numbers">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Character-Constants"></span><div class="header">
+<p>
+Next: <a href="String-Constants.html" accesskey="n" rel="next">String Constants</a>, Previous: <a href="Invalid-Numbers.html" accesskey="p" rel="prev">Invalid Numbers</a>, Up: <a href="Constants.html" accesskey="u" rel="up">Constants</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>
+</div>
+<hr>
+<span id="Character-Constants-1"></span><h3 class="section">12.6 Character Constants</h3>
+<span id="index-character-constants"></span>
+<span id="index-constants_002c-character"></span>
+<span id="index-escape-sequence"></span>
+
+<p>A <em>character constant</em> is written with single quotes, as in
+<code>'<var>c</var>'</code>.  In the simplest case, <var>c</var> is a single ASCII
+character that the constant should represent.  The constant has type
+<code>int</code>, and its value is the character code of that character.
+For instance, <code>'a'</code> represents the character code for the letter
+&lsquo;<samp>a</samp>&rsquo;: 97, that is.
+</p>
+<p>To put the &lsquo;<samp>'</samp>&rsquo; character (single quote) in the character
+constant, <em>quote</em> it with a backslash (&lsquo;<samp>\</samp>&rsquo;).  This character
+constant looks like <code>'\''</code>.  This sort of sequence, starting with
+&lsquo;<samp>\</samp>&rsquo;, is called an <em>escape sequence</em>&mdash;the backslash character
+here functions as a kind of <em>escape character</em>.
+</p>
+<p>To put the &lsquo;<samp>\</samp>&rsquo; character (backslash) in the character constant,
+quote it likewise with &lsquo;<samp>\</samp>&rsquo; (another backslash).  This character
+constant looks like <code>'\\'</code>.
+</p>
+<span id="index-bell-character"></span>
+<span id="index-_005ca"></span>
+<span id="index-backspace"></span>
+<span id="index-_005cb"></span>
+<span id="index-tab-_0028ASCII-character_0029"></span>
+<span id="index-_005ct"></span>
+<span id="index-vertical-tab"></span>
+<span id="index-_005cv"></span>
+<span id="index-formfeed"></span>
+<span id="index-_005cf"></span>
+<span id="index-newline"></span>
+<span id="index-_005cn"></span>
+<span id="index-return-_0028ASCII-character_0029"></span>
+<span id="index-_005cr"></span>
+<span id="index-escape-_0028ASCII-character_0029"></span>
+<span id="index-_005ce"></span>
+<p>Here are all the escape sequences that represent specific
+characters in a character constant.  The numeric values shown are
+the corresponding ASCII character codes, as decimal numbers.
+</p>
+<div class="example">
+<pre class="example">'\a' &rArr; 7       /* <span class="roman">alarm, <kbd>CTRL-g</kbd></span> */
+'\b' &rArr; 8       /* <span class="roman">backspace, <tt class="key">BS</tt>, <kbd>CTRL-h</kbd></span> */
+'\t' &rArr; 9       /* <span class="roman">tab, <tt class="key">TAB</tt>, <kbd>CTRL-i</kbd></span> */
+'\n' &rArr; 10      /* <span class="roman">newline, <kbd>CTRL-j</kbd></span> */
+'\v' &rArr; 11      /* <span class="roman">vertical tab, <kbd>CTRL-k</kbd></span> */
+'\f' &rArr; 12      /* <span class="roman">formfeed, <kbd>CTRL-l</kbd></span> */
+'\r' &rArr; 13      /* <span class="roman">carriage return, <tt class="key">RET</tt>, <kbd>CTRL-m</kbd></span> */
+'\e' &rArr; 27      /* <span class="roman">escape character, <tt class="key">ESC</tt>, <kbd>CTRL-[</kbd></span> */
+'\\' &rArr; 92      /* <span class="roman">backslash character, <kbd>\</kbd></span> */
+'\'' &rArr; 39      /* <span class="roman">singlequote character, <kbd>'</kbd></span> */
+'\&quot;' &rArr; 34      /* <span class="roman">doublequote character, <kbd>&quot;</kbd></span> */
+'\?' &rArr; 63      /* <span class="roman">question mark, <kbd>?</kbd></span> */
+</pre></div>
+
+<p>&lsquo;<samp>\e</samp>&rsquo; is a GNU C extension; to stick to standard C, write &lsquo;<samp>\33</samp>&rsquo;.
+</p>
+<p>You can also write octal and hex character codes as
+&lsquo;<samp>\<var>octalcode</var></samp>&rsquo; or &lsquo;<samp>\x<var>hexcode</var></samp>&rsquo;.  Decimal is not an
+option here, so octal codes do not need to start with &lsquo;<samp>0</samp>&rsquo;.
+</p>
+<p>The character constant&rsquo;s value has type <code>int</code>.  However, the
+character code is treated initially as a <code>char</code> value, which is
+then converted to <code>int</code>.  If the character code is greater than
+127 (<code>0177</code> in octal), the resulting <code>int</code> may be negative
+on a platform where the type <code>char</code> is 8 bits long and signed.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="String-Constants.html" accesskey="n" rel="next">String Constants</a>, Previous: <a href="Invalid-Numbers.html" accesskey="p" rel="prev">Invalid Numbers</a>, Up: <a href="Constants.html" accesskey="u" rel="up">Constants</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Characters.html
===================================================================
--- public/doc/gnu-c/Characters.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Characters.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,102 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Characters (GNU C Language Manual)</title>
+
+<meta name="description" content="Characters (GNU C Language Manual)">
+<meta name="keywords" content="Characters (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Lexical-Syntax.html" rel="up" title="Lexical Syntax">
+<link href="Whitespace.html" rel="next" title="Whitespace">
+<link href="English.html" rel="prev" title="English">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Characters"></span><div class="header">
+<p>
+Next: <a href="Whitespace.html" accesskey="n" rel="next">Whitespace</a>, Previous: <a href="English.html" accesskey="p" rel="prev">English</a>, Up: <a href="Lexical-Syntax.html" accesskey="u" rel="up">Lexical Syntax</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>
+</div>
+<hr>
+<span id="Characters-1"></span><h3 class="section">5.2 Characters</h3>
+<span id="index-character-set"></span>
+<span id="index-Unicode"></span>
+
+
+<p>GNU C source files are usually written in the
+<a href="https://en.wikipedia.org/wiki/ASCII">ASCII</a> character set, which
+was defined in the 1960s for English.  However, they can also include
+Unicode characters represented in the
+<a href="https://en.wikipedia.org/wiki/UTF-8">UTF-8</a> multibyte encoding.
+This makes it possible to represent accented letters such as &lsquo;<samp>á</samp>&rsquo;,
+as well as other scripts such as Arabic, Chinese, Cyrillic, Hebrew,
+Japanese, and Korean.<a id="DOCF1" href="#FOOT1"><sup>1</sup></a>
+</p>
+<p>In C source code, non-ASCII characters are valid in comments, in wide
+character constants (see <a href="Wide-Character-Constants.html">Wide Character Constants</a>), and in string
+constants (see <a href="String-Constants.html">String Constants</a>).
+</p>
+<p>Another way to specify non-ASCII characters in constants (character or
+string) and identifiers is with an escape sequence starting with
+backslash, specifying the intended Unicode character.  (See <a href="Unicode-Character-Codes.html">Unicode Character Codes</a>.)  This specifies non-ASCII characters without
+putting a real non-ASCII character in the source file itself.
+</p>
+<p>C accepts two-character aliases called <em>digraphs</em> for certain
+characters.  See <a href="Digraphs.html">Digraphs</a>.
+</p>
+<div class="footnote">
+<hr>
+<h4 class="footnotes-heading">Footnotes</h4>
+
+<h5><a id="FOOT1" href="#DOCF1">(1)</a></h3>
+<p>On some obscure systems, GNU C uses
+UTF-EBCDIC instead of UTF-8, but that is not worth describing in this
+manual.</p>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Clean-Comma.html
===================================================================
--- public/doc/gnu-c/Clean-Comma.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Clean-Comma.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,108 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Clean Comma (GNU C Language Manual)</title>
+
+<meta name="description" content="Clean Comma (GNU C Language Manual)">
+<meta name="keywords" content="Clean Comma (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Comma-Operator.html" rel="up" title="Comma Operator">
+<link href="Avoid-Comma.html" rel="next" title="Avoid Comma">
+<link href="Uses-of-Comma.html" rel="prev" title="Uses of Comma">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Clean-Comma"></span><div class="header">
+<p>
+Next: <a href="Avoid-Comma.html" accesskey="n" rel="next">Avoid Comma</a>, Previous: <a href="Uses-of-Comma.html" accesskey="p" rel="prev">Uses of Comma</a>, Up: <a href="Comma-Operator.html" accesskey="u" rel="up">Comma Operator</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>
+</div>
+<hr>
+<span id="Clean-Use-of-the-Comma-Operator"></span><h4 class="subsection">8.5.2 Clean Use of the Comma Operator</h4>
+
+<p>Always write parentheses around a series of comma operators, except
+when it is at top level in an expression statement, or within the
+parentheses of an <code>if</code>, <code>for</code>, <code>while</code>, or <code>switch</code>
+statement (see <a href="Statements.html">Statements</a>).  For instance, in
+</p>
+<div class="example">
+<pre class="example">for (i = 0, j = 10, k = 20; i &lt; n; i++)
+</pre></div>
+
+<p>the commas between the assignments are clear because they are between
+a parenthesis and a semicolon.
+</p>
+<p>The arguments in a function call are also separated by commas, but that is
+not an instance of the comma operator.  Note the difference between
+</p>
+<div class="example">
+<pre class="example">foo (4, 5, 6)
+</pre></div>
+
+<p>which passes three arguments to <code>foo</code> and
+</p>
+<div class="example">
+<pre class="example">foo ((4, 5, 6))
+</pre></div>
+
+<p>which uses the comma operator and passes just one argument
+(with value 6).
+</p>
+<p><strong>Warning:</strong> don&rsquo;t use the comma operator around an argument
+of a function unless it helps understand the code.  When you do so,
+don&rsquo;t put part of another argument on the same line.  Instead, add a
+line break to make the parentheses around the comma operator easier to
+see, like this.
+</p>
+<div class="example">
+<pre class="example">foo ((mumble (x, y), frob (z)),
+     *p)
+</pre></div>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Combining-Variable-Declarations.html
===================================================================
--- public/doc/gnu-c/Combining-Variable-Declarations.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Combining-Variable-Declarations.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,104 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Combining Variable Declarations (GNU C Language Manual)</title>
+
+<meta name="description" content="Combining Variable Declarations (GNU C Language Manual)">
+<meta name="keywords" content="Combining Variable Declarations (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Variable-Declarations.html" rel="up" title="Variable Declarations">
+<link href="Initializers.html" rel="next" title="Initializers">
+<link href="Declaring-Arrays-and-Pointers.html" rel="prev" title="Declaring Arrays and Pointers">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Combining-Variable-Declarations"></span><div class="header">
+<p>
+Previous: <a href="Declaring-Arrays-and-Pointers.html" accesskey="p" rel="prev">Declaring Arrays and Pointers</a>, Up: <a href="Variable-Declarations.html" accesskey="u" rel="up">Variable Declarations</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>
+</div>
+<hr>
+<span id="Combining-Variable-Declarations-1"></span><h4 class="subsection">20.1.2 Combining Variable Declarations</h4>
+<span id="index-combining-variable-declarations"></span>
+<span id="index-variable-declarations_002c-combining"></span>
+<span id="index-declarations_002c-combining"></span>
+
+<p>When multiple declarations have the same <var>keywords</var> and
+<var>basetype</var>, you can combine them using commas.  Thus,
+</p>
+<div class="example">
+<pre class="example"><var>keywords</var> <var>basetype</var>
+   <var>decorated-variable-1</var> <span class="roman">[</span>= <var>init1</var><span class="roman">]</span>,
+   <var>decorated-variable-2</var> <span class="roman">[</span>= <var>init2</var><span class="roman">]</span>;
+</pre></div>
+
+<p>is equivalent to
+</p>
+<div class="example">
+<pre class="example"><var>keywords</var> <var>basetype</var>
+   <var>decorated-variable-1</var> <span class="roman">[</span>= <var>init1</var><span class="roman">]</span>;
+<var>keywords</var> <var>basetype</var>
+   <var>decorated-variable-2</var> <span class="roman">[</span>= <var>init2</var><span class="roman">]</span>;
+</pre></div>
+
+<p>Here are some simple examples:
+</p>
+<div class="example">
+<pre class="example">int a, b;
+int a = 1, b = 2;
+int a, *p, array[5];
+int a = 0, *p = &amp;a, array[5] = {1, 2};
+</pre></div>
+
+<p>In the last two examples, <code>a</code> is an <code>int</code>, <code>p</code> is a
+pointer to <code>int</code>, and <code>array</code> is an array of 5 <code>int</code>s.
+Since the initializer for <code>array</code> specifies only two elements,
+the other three elements are initialized to zero.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Comma-Operator.html
===================================================================
--- public/doc/gnu-c/Comma-Operator.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Comma-Operator.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,92 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Comma Operator (GNU C Language Manual)</title>
+
+<meta name="description" content="Comma Operator (GNU C Language Manual)">
+<meta name="keywords" content="Comma Operator (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Execution-Control-Expressions.html" rel="up" title="Execution Control Expressions">
+<link href="Uses-of-Comma.html" rel="next" title="Uses of Comma">
+<link href="Conditional-Branches.html" rel="prev" title="Conditional Branches">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Comma-Operator"></span><div class="header">
+<p>
+Previous: <a href="Conditional-Expression.html" accesskey="p" rel="prev">Conditional Expression</a>, Up: <a href="Execution-Control-Expressions.html" accesskey="u" rel="up">Execution Control Expressions</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>
+</div>
+<hr>
+<span id="Comma-Operator-1"></span><h3 class="section">8.5 Comma Operator</h3>
+<span id="index-comma-operator"></span>
+<span id="index-operator_002c-comma"></span>
+
+<p>The comma operator stands for sequential execution of expressions.
+The value of the comma expression comes from the last expression in
+the sequence; the previous expressions are computed only for their
+side effects.  It looks like this:
+</p>
+<div class="example">
+<pre class="example"><var>exp1</var>, <var>exp2</var> <span class="roman">&hellip;</span>
+</pre></div>
+
+<p>You can bundle any number of expressions together this way, by putting
+commas between them.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Uses-of-Comma.html" accesskey="1">Uses of Comma</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">When to use the comma operator.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Clean-Comma.html" accesskey="2">Clean Comma</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Clean use of the comma operator.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Avoid-Comma.html" accesskey="3">Avoid Comma</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">When to not use the comma operator.
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Command_002dline-Parameters.html
===================================================================
--- public/doc/gnu-c/Command_002dline-Parameters.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Command_002dline-Parameters.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,108 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Command-line Parameters (GNU C Language Manual)</title>
+
+<meta name="description" content="Command-line Parameters (GNU C Language Manual)">
+<meta name="keywords" content="Command-line Parameters (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="The-main-Function.html" rel="up" title="The main Function">
+<link href="Environment-Variables.html" rel="next" title="Environment Variables">
+<link href="Values-from-main.html" rel="prev" title="Values from main">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Command_002dline-Parameters"></span><div class="header">
+<p>
+Next: <a href="Environment-Variables.html" accesskey="n" rel="next">Environment Variables</a>, Previous: <a href="Values-from-main.html" accesskey="p" rel="prev">Values from main</a>, Up: <a href="The-main-Function.html" accesskey="u" rel="up">The main Function</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>
+</div>
+<hr>
+<span id="Accessing-Command_002dline-Parameters"></span><h4 class="subsection">22.6.2 Accessing Command-line Parameters</h4>
+<span id="index-command_002dline-parameters"></span>
+<span id="index-parameters_002c-command_002dline"></span>
+
+<p>If the program was invoked with any command-line arguments, it can
+access them through the arguments of <code>main</code>, <code>argc</code> and
+<code>argv</code>.  (You can give these arguments any names, but the names
+<code>argc</code> and <code>argv</code> are customary.)
+</p>
+<p>The value of <code>argv</code> is an array containing all of the
+command-line arguments as strings, with the name of the command
+invoked as the first string.  <code>argc</code> is an integer that says how
+many strings <code>argv</code> contains.  Here is an example of accessing
+the command-line parameters, retrieving the program&rsquo;s name and
+checking for the standard <samp>--version</samp> and <samp>--help</samp> options:
+</p>
+<div class="example">
+<pre class="example">#include &lt;string.h&gt; /* <span class="roman">Declare <code>strcmp</code>.</span> */
+
+int
+main (int argc, char *argv[])
+{
+  char *program_name = argv[0];
+
+  for (int i = 1; i &lt; argc; i++)
+    {
+      if (!strcmp (argv[i], &quot;--version&quot;))
+        {
+          /* <span class="roman">Print version information and exit.</span> */
+          <span class="roman">&hellip;</span>
+        }
+      else if (!strcmp (argv[i], &quot;--help&quot;))
+        {
+          /* <span class="roman">Print help information and exit.</span> */
+          <span class="roman">&hellip;</span>
+        }
+    }
+  <span class="roman">&hellip;</span>
+}
+</pre></div>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Comments.html
===================================================================
--- public/doc/gnu-c/Comments.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Comments.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,160 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Comments (GNU C Language Manual)</title>
+
+<meta name="description" content="Comments (GNU C Language Manual)">
+<meta name="keywords" content="Comments (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Lexical-Syntax.html" rel="up" title="Lexical Syntax">
+<link href="Identifiers.html" rel="next" title="Identifiers">
+<link href="Whitespace.html" rel="prev" title="Whitespace">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Comments"></span><div class="header">
+<p>
+Next: <a href="Identifiers.html" accesskey="n" rel="next">Identifiers</a>, Previous: <a href="Whitespace.html" accesskey="p" rel="prev">Whitespace</a>, Up: <a href="Lexical-Syntax.html" accesskey="u" rel="up">Lexical Syntax</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>
+</div>
+<hr>
+<span id="Comments-1"></span><h3 class="section">5.4 Comments</h3>
+<span id="index-comments"></span>
+
+<p>A comment encapsulates text that has no effect on the program&rsquo;s
+execution or meaning.
+</p>
+<p>The purpose of comments is to explain the code to people that read it.
+Writing good comments for your code is tremendously important&mdash;they
+should provide background information that helps programmers
+understand the reasons why the code is written the way it is.  You,
+returning to the code six months from now, will need the help of these
+comments to remember why you wrote it this way.
+</p>
+<p>Outdated comments that become incorrect are counterproductive, so part
+of the software developer&rsquo;s responsibility is to update comments as
+needed to correspond with changes to the program code.
+</p>
+<p>C allows two kinds of comment syntax, the traditional style and the
+C<tt>++</tt> style.  A traditional C comment starts with &lsquo;<samp>/*</samp>&rsquo; and ends
+with &lsquo;<samp>*/</samp>&rsquo;.  For instance,
+</p>
+<div class="example">
+<pre class="example">/* <span class="roman">This is a comment in traditional C syntax.</span> */
+</pre></div>
+
+<p>A traditional comment can contain &lsquo;<samp>/*</samp>&rsquo;, but these delimiters do
+not nest as pairs.  The first &lsquo;<samp>*/</samp>&rsquo; ends the comment regardless of
+whether it contains &lsquo;<samp>/*</samp>&rsquo; sequences.
+</p>
+<div class="example">
+<pre class="example">/* <span class="roman">This</span> /* <span class="roman">is a comment</span> */ But this is not! */
+</pre></div>
+
+<p>A <em>line comment</em> starts with &lsquo;<samp>//</samp>&rsquo; and ends at the end of the line.
+For instance,
+</p>
+<div class="example">
+<pre class="example">// <span class="roman">This is a comment in C<tt>++</tt> style.</span>
+</pre></div>
+
+<p>Line comments do nest, in effect, because &lsquo;<samp>//</samp>&rsquo; inside a line
+comment is part of that comment:
+</p>
+<div class="example">
+<pre class="example">// <span class="roman">this whole line is</span> // <span class="roman">one comment</span>
+This is code, not comment.
+</pre></div>
+
+<p>It is safe to put line comments inside block comments, or vice versa.
+</p>
+<div class="example">
+<pre class="example">/* <span class="roman">traditional comment</span>
+   // <span class="roman">contains line comment</span>
+   <span class="roman">more traditional comment</span>
+ */ text here is not a comment
+
+// <span class="roman">line comment</span> /* <span class="roman">contains traditional comment</span> */
+</pre></div>
+
+<p>But beware of commenting out one end of a traditional comment with a line
+comment.  The delimiter &lsquo;<samp>/*</samp>&rsquo; doesn&rsquo;t start a comment if it occurs
+inside an already-started comment.
+</p>
+<div class="example">
+<pre class="example"> // <span class="roman">line comment</span>  /* <span class="roman">That would ordinarily begin a block comment.</span>
+    Oops! The line comment has ended;
+    this isn't a comment any more.  */
+</pre></div>
+
+<p>Comments are not recognized within string constants.  <tt>&quot;/*&nbsp;blah&nbsp;*/&quot;<!-- /@w --></tt> is the string constant &lsquo;<samp>/*&nbsp;blah&nbsp;*/<!-- /@w --></samp>&rsquo;, not an empty
+string.
+</p>
+<p>In this manual we show the text in comments in a variable-width font,
+for readability, but this font distinction does not exist in source
+files.
+</p>
+<p>A comment is syntactically equivalent to whitespace, so it always
+separates tokens.  Thus,
+</p>
+<div class="example">
+<pre class="example">  int/* <span class="roman">comment</span> */foo;
+<span class="roman">is equivalent to</span>
+  int foo;
+</pre></div>
+
+<p>but clean code always uses real whitespace to separate the comment
+visually from surrounding code.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Identifiers.html" accesskey="n" rel="next">Identifiers</a>, Previous: <a href="Whitespace.html" accesskey="p" rel="prev">Whitespace</a>, Up: <a href="Lexical-Syntax.html" accesskey="u" rel="up">Lexical Syntax</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Common-Type.html
===================================================================
--- public/doc/gnu-c/Common-Type.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Common-Type.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,98 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Common Type (GNU C Language Manual)</title>
+
+<meta name="description" content="Common Type (GNU C Language Manual)">
+<meta name="keywords" content="Common Type (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Type-Conversions.html" rel="up" title="Type Conversions">
+<link href="Scope.html" rel="next" title="Scope">
+<link href="Operand-Promotions.html" rel="prev" title="Operand Promotions">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Common-Type"></span><div class="header">
+<p>
+Previous: <a href="Operand-Promotions.html" accesskey="p" rel="prev">Operand Promotions</a>, Up: <a href="Type-Conversions.html" accesskey="u" rel="up">Type Conversions</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>
+</div>
+<hr>
+<span id="Common-Type-1"></span><h3 class="section">24.5 Common Type</h3>
+<span id="index-common-type"></span>
+
+<p>Arithmetic binary operators (except the shift operators) convert their
+operands to the <em>common type</em> before operating on them.
+Conditional expressions also convert the two possible results to their
+common type.  Here are the rules for determining the common type.
+</p>
+<p>If one of the numbers has a floating-point type and the other is an
+integer, the common type is that floating-point type.  For instance,
+</p>
+<div class="example">
+<pre class="example">5.6 * 2   &rArr; 11.2 /* <span class="roman">a <code>double</code> value</span> */
+</pre></div>
+
+<p>If both are floating point, the type with the larger range is the
+common type.
+</p>
+<p>If both are integers but of different widths, the common type
+is the wider of the two.
+</p>
+<p>If they are integer types of the same width, the common type is
+unsigned if either operand is unsigned, and it&rsquo;s <code>long</code> if either
+operand is <code>long</code>.  It&rsquo;s <code>long long</code> if either operand is
+<code>long long</code>.
+</p>
+<p>These rules apply to addition, subtraction, multiplication, division,
+remainder, comparisons, and bitwise operations.  They also apply to
+the two branches of a conditional expression, and to the arithmetic
+done in a modifying assignment operation.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Compatible-Types.html
===================================================================
--- public/doc/gnu-c/Compatible-Types.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Compatible-Types.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,140 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Compatible Types (GNU C Language Manual)</title>
+
+<meta name="description" content="Compatible Types (GNU C Language Manual)">
+<meta name="keywords" content="Compatible Types (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html" rel="up" title="Top">
+<link href="Type-Conversions.html" rel="next" title="Type Conversions">
+<link href="Old_002dStyle-Function-Definitions.html" rel="prev" title="Old-Style Function Definitions">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Compatible-Types"></span><div class="header">
+<p>
+Next: <a href="Type-Conversions.html" accesskey="n" rel="next">Type Conversions</a>, Previous: <a href="Functions.html" accesskey="p" rel="prev">Functions</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</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>
+</div>
+<hr>
+<span id="Compatible-Types-1"></span><h2 class="chapter">23 Compatible Types</h2>
+<span id="index-compatible-types"></span>
+<span id="index-types_002c-compatible"></span>
+
+<p>Declaring a function or variable twice is valid in C only if the two
+declarations specify <em>compatible</em> types.  In addition, some
+operations on pointers require operands to have compatible target
+types.
+</p>
+<p>In C, two different primitive types are never compatible.  Likewise for
+the defined types <code>struct</code>, <code>union</code> and <code>enum</code>: two
+separately defined types are incompatible unless they are defined
+exactly the same way.
+</p>
+<p>However, there are a few cases where different types can be
+compatible:
+</p>
+<ul>
+<li> Every enumeration type is compatible with some integer type.  In GNU
+C, the choice of integer type depends on the largest enumeration
+value.
+
+
+</li><li> Array types are compatible if the element types are compatible
+and the sizes (when specified) match.
+
+</li><li> Pointer types are compatible if the pointer target types are
+compatible.
+
+</li><li> Function types that specify argument types are compatible if the
+return types are compatible and the argument types are compatible,
+argument by argument.  In addition, they must all agree in whether
+they use <code>...</code> to allow additional arguments.
+
+</li><li> Function types that don&rsquo;t specify argument types are compatible if the
+return types are.
+
+</li><li> Function types that specify the argument types are compatible with
+function types that omit them, if the return types are compatible and
+the specified argument types are unaltered by the argument promotions
+(see <a href="Argument-Promotions.html">Argument Promotions</a>).
+</li></ul>
+
+<p>In order for types to be compatible, they must agree in their type
+qualifiers.  Thus, <code>const int</code> and <code>int</code> are incompatible.
+It follows that <code>const int *</code> and <code>int *</code> are incompatible
+too (they are pointers to types that are not compatible).
+</p>
+<p>If two types are compatible ignoring the qualifiers, we call them
+<em>nearly compatible</em>.  (If they are array types, we ignore
+qualifiers on the element types.<a id="DOCF7" href="#FOOT7"><sup>7</sup></a>)
+Comparison of pointers is valid if the pointers&rsquo; target types are
+nearly compatible.  Likewise, the two branches of a conditional
+expression may be pointers to nearly compatible target types.
+</p>
+<p>If two types are compatible ignoring the qualifiers, and the first
+type has all the qualifiers of the second type, we say the first is
+<em>upward compatible</em> with the second.  Assignment of pointers
+requires the assigned pointer&rsquo;s target type to be upward compatible
+with the right operand (the new value)&rsquo;s target type.
+</p>
+<div class="footnote">
+<hr>
+<h4 class="footnotes-heading">Footnotes</h4>
+
+<h5><a id="FOOT7" href="#DOCF7">(7)</a></h3>
+<p>This is a GNU C extension.</p>
+</div>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Type-Conversions.html" accesskey="n" rel="next">Type Conversions</a>, Previous: <a href="Functions.html" accesskey="p" rel="prev">Functions</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Compilation.html
===================================================================
--- public/doc/gnu-c/Compilation.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Compilation.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,135 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Compilation (GNU C Language Manual)</title>
+
+<meta name="description" content="Compilation (GNU C Language Manual)">
+<meta name="keywords" content="Compilation (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html" rel="up" title="Top">
+<link href="Directing-Compilation.html" rel="next" title="Directing Compilation">
+<link href="Further-Reading.html" rel="prev" title="Further Reading">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Compilation"></span><div class="header">
+<p>
+Next: <a href="Directing-Compilation.html" accesskey="n" rel="next">Directing Compilation</a>, Previous: <a href="Floating-Point-in-Depth.html" accesskey="p" rel="prev">Floating Point in Depth</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</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>
+</div>
+<hr>
+<span id="Compilation-1"></span><h2 class="chapter">29 Compilation</h2>
+<span id="index-object-file"></span>
+<span id="index-compilation-module"></span>
+<span id="index-make-rules"></span>
+
+<p>Early in the manual we explained how to compile a simple C program
+that consists of a single source file (see <a href="Compile-Example.html">Compile Example</a>).
+However, we handle only short programs that way.  A typical C program
+consists of many source files, each of which is a separate
+<em>compilation module</em>&mdash;meaning that it has to be compiled
+separately.
+</p>
+<p>The full details of how to compile with GCC are documented in xxxx.
+Here we give only a simple introduction.
+</p>
+<p>These are the commands to compile two compilation modules,
+<samp>foo.c</samp> and <samp>bar.c</samp>, with a command for each module:
+</p>
+<div class="example">
+<pre class="example">gcc -c -O -g foo.c
+gcc -c -O -g bar.c
+</pre></div>
+
+<p>In these commands, <samp>-g</samp> says to generate debugging information,
+<samp>-O</samp> says to do some optimization, and <samp>-c</samp> says to put
+the compiled code for that module into a corresponding <em>object
+file</em> and go no further.  The object file for <samp>foo.c</samp> is called
+<samp>foo.o</samp>, and so on.
+</p>
+<p>If you wish, you can specify the additional options <samp>-Wformat
+-Wparenthesis -Wstrict-prototypes</samp>, which request additional warnings.
+</p>
+<p>One reason to divide a large program into multiple compilation modules
+is to control how each module can access the internals of the others.
+When a module declares a function or variable <code>extern</code>, other
+modules can access it.  The other functions and variables in
+a module can&rsquo;t be accessed from outside that module.
+</p>
+<p>The other reason for using multiple modules is so that changing
+one source file does not require recompiling all of them in order
+to try the modified program.  Dividing a large program into many
+substantial modules in this way typically makes recompilation much faster.
+</p>
+<span id="index-linking-object-files"></span>
+<p>After you compile all the program&rsquo;s modules, in order to run the
+program you must <em>link</em> the object files into a combined
+executable, like this:
+</p>
+<div class="example">
+<pre class="example">gcc -o foo foo.o bar.o
+</pre></div>
+
+<p>In this command, <samp>-o foo</samp> species the file name for the
+executable file, and the other arguments are the object files to link.
+Always specify the executable file name in a command that generates
+one.
+</p>
+<p>Normally we don&rsquo;t run any of these commands directly.  Instead we
+write a set of <em>make rules</em> for the program, then use the
+<code>make</code> program to recompile only the source files that need to
+be recompiled.
+</p>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Directing-Compilation.html" accesskey="n" rel="next">Directing Compilation</a>, Previous: <a href="Floating-Point-in-Depth.html" accesskey="p" rel="prev">Floating Point in Depth</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Compile-Example.html
===================================================================
--- public/doc/gnu-c/Compile-Example.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Compile-Example.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,108 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Compile Example (GNU C Language Manual)</title>
+
+<meta name="description" content="Compile Example (GNU C Language Manual)">
+<meta name="keywords" content="Compile Example (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Complete-Program.html" rel="up" title="Complete Program">
+<link href="Storage.html" rel="next" title="Storage">
+<link href="Complete-Line_002dby_002dLine.html" rel="prev" title="Complete Line-by-Line">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Compile-Example"></span><div class="header">
+<p>
+Previous: <a href="Complete-Line_002dby_002dLine.html" accesskey="p" rel="prev">Complete Line-by-Line</a>, Up: <a href="Complete-Program.html" accesskey="u" rel="up">Complete Program</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>
+</div>
+<hr>
+<span id="Compiling-the-Example-Program"></span><h3 class="section">2.4 Compiling the Example Program</h3>
+<span id="index-compiling"></span>
+<span id="index-executable-file"></span>
+
+<p>To run a C program requires converting the source code into an
+<em>executable file</em>.  This is called <em>compiling</em> the program,
+and the command to do that using GNU C is <code>gcc</code>.
+</p>
+<p>This example program consists of a single source file.  If we
+call that file <samp>fib1.c</samp>, the complete command to compile it is
+this:
+</p>
+<div class="example">
+<pre class="example">gcc -g -O -o fib1 fib1.c
+</pre></div>
+
+<p>Here, <samp>-g</samp> says to generate debugging information, <samp>-O</samp>
+says to optimize at the basic level, and <samp>-o fib1</samp> says to put
+the executable program in the file <samp>fib1</samp>.
+</p>
+<p>To run the program, use its file name as a shell command.
+For instance,
+</p>
+<div class="example">
+<pre class="example">./fib1
+</pre></div>
+
+<p>However, unless you are sure the program is correct, you should
+expect to need to debug it.  So use this command,
+</p>
+<div class="example">
+<pre class="example">gdb fib1
+</pre></div>
+
+<p>which starts the GDB debugger (see <a href="https://sourceware.org/gdb/current/onlinedocs/gdb/Sample-Session.html#Sample-Session">A Sample GDB Session</a> in <cite>Debugging with GDB</cite>) so you can run and
+debug the executable program <code>fib1</code>.
+</p>
+
+<p>See <a href="Compilation.html">Compilation</a>, for an introduction to compiling more complex
+programs which consist of more than one source file.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Complete-Example.html
===================================================================
--- public/doc/gnu-c/Complete-Example.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Complete-Example.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,97 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Complete Example (GNU C Language Manual)</title>
+
+<meta name="description" content="Complete Example (GNU C Language Manual)">
+<meta name="keywords" content="Complete Example (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Complete-Program.html" rel="up" title="Complete Program">
+<link href="Complete-Explanation.html" rel="next" title="Complete Explanation">
+<link href="Complete-Program.html" rel="prev" title="Complete Program">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Complete-Example"></span><div class="header">
+<p>
+Next: <a href="Complete-Explanation.html" accesskey="n" rel="next">Complete Explanation</a>, Up: <a href="Complete-Program.html" accesskey="u" rel="up">Complete Program</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>
+</div>
+<hr>
+<span id="Complete-Program-Example"></span><h3 class="section">2.1 Complete Program Example</h3>
+
+<p>Here is the complete program that uses the simple, recursive version
+of the <code>fib</code> function (see <a href="Recursive-Fibonacci.html">Recursive Fibonacci</a>):
+</p>
+<div class="example">
+<pre class="example">#include &lt;stdio.h&gt;
+
+int
+fib (int n)
+{
+  if (n &lt;= 2)  /* <span class="roman">This avoids infinite recursion.</span>  */
+    return 1;
+  else
+    return fib (n - 1) + fib (n - 2);
+}
+
+int
+main (void)
+{
+  printf (&quot;Fibonacci series item %d is %d\n&quot;,
+          20, fib (20));
+  return 0;
+}
+</pre></div>
+
+<p>This program prints a message that shows the value of <code>fib (20)</code>.
+</p>
+<p>Now for an explanation of what that code means.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Complete-Explanation.html
===================================================================
--- public/doc/gnu-c/Complete-Explanation.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Complete-Explanation.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,146 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Complete Explanation (GNU C Language Manual)</title>
+
+<meta name="description" content="Complete Explanation (GNU C Language Manual)">
+<meta name="keywords" content="Complete Explanation (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Complete-Program.html" rel="up" title="Complete Program">
+<link href="Complete-Line_002dby_002dLine.html" rel="next" title="Complete Line-by-Line">
+<link href="Complete-Example.html" rel="prev" title="Complete Example">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Complete-Explanation"></span><div class="header">
+<p>
+Next: <a href="Complete-Line_002dby_002dLine.html" accesskey="n" rel="next">Complete Line-by-Line</a>, Previous: <a href="Complete-Example.html" accesskey="p" rel="prev">Complete Example</a>, Up: <a href="Complete-Program.html" accesskey="u" rel="up">Complete Program</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>
+</div>
+<hr>
+<span id="Complete-Program-Explanation"></span><h3 class="section">2.2 Complete Program Explanation</h3>
+
+<p>Here&rsquo;s the explanation of the code of the example in the
+previous section.
+</p>
+<p>This sample program prints a message that shows the value of <code>fib
+(20)</code>, and exits with code 0 (which stands for successful execution).
+</p>
+<p>Every C program is started by running the function named <code>main</code>.
+Therefore, the example program defines a function named <code>main</code> to
+provide a way to start it.  Whatever that function does is what the
+program does.  See <a href="The-main-Function.html">The main Function</a>.
+</p>
+<p>The <code>main</code> function is the first one called when the program
+runs, but it doesn&rsquo;t come first in the example code.  The order of the
+function definitions in the source code makes no difference to the
+program&rsquo;s meaning.
+</p>
+<p>The initial call to <code>main</code> always passes certain arguments, but
+<code>main</code> does not have to pay attention to them.  To ignore those
+arguments, define <code>main</code> with <code>void</code> as the parameter list.
+(<code>void</code> as a function&rsquo;s parameter list normally means &ldquo;call with
+no arguments,&rdquo; but <code>main</code> is a special case.)
+</p>
+<p>The function <code>main</code> returns 0 because that is
+the conventional way for <code>main</code> to indicate successful execution.
+It could instead return a positive integer to indicate failure, and
+some utility programs have specific conventions for the meaning of
+certain numeric <em>failure codes</em>.  See <a href="Values-from-main.html">Values from main</a>.
+</p>
+<span id="index-printf"></span>
+<p>The simplest way to print text in C is by calling the <code>printf</code>
+function, so here we explain what that does.
+</p>
+<span id="index-standard-output"></span>
+<p>The first argument to <code>printf</code> is a <em>string constant</em>
+(see <a href="String-Constants.html">String Constants</a>) that is a template for output.  The
+function <code>printf</code> copies most of that string directly as output,
+including the newline character at the end of the string, which is
+written as &lsquo;<samp>\n</samp>&rsquo;.  The output goes to the program&rsquo;s <em>standard
+output</em> destination, which in the usual case is the terminal.
+</p>
+<p>&lsquo;<samp>%</samp>&rsquo; in the template introduces a code that substitutes other text
+into the output.  Specifically, &lsquo;<samp>%d</samp>&rsquo; means to take the next
+argument to <code>printf</code> and substitute it into the text as a decimal
+number.  (The argument for &lsquo;<samp>%d</samp>&rsquo; must be of type <code>int</code>; if it
+isn&rsquo;t, <code>printf</code> will malfunction.)  So the output is a line that
+looks like this:
+</p>
+<div class="example">
+<pre class="example">Fibonacci series item 20 is 6765
+</pre></div>
+
+<p>This program does not contain a definition for <code>printf</code> because
+it is defined by the C library, which makes it available in all C
+programs.  However, each program does need to <em>declare</em>
+<code>printf</code> so it will be called correctly.  The <code>#include</code>
+line takes care of that; it includes a <em>header file</em> called
+<samp>stdio.h</samp> into the program&rsquo;s code.  That file is provided by the
+operating system and it contains declarations for the many standard
+input/output functions in the C library, one of which is
+<code>printf</code>.
+</p>
+<p>Don&rsquo;t worry about header files for now; we&rsquo;ll explain them later in
+<a href="Header-Files.html">Header Files</a>.
+</p>
+<p>The first argument of <code>printf</code> does not have to be a string
+constant; it can be any string (see <a href="Strings.html">Strings</a>).  However, using a
+constant is the most common case.
+</p>
+<p>To learn more about <code>printf</code> and other facilities of the C
+library, see <a href="https://www.gnu.org/software/libc/manual/html_node/index.html#Top">The GNU C Library</a> in <cite>The GNU C Library
+Reference Manual</cite>.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Complete-Line_002dby_002dLine.html" accesskey="n" rel="next">Complete Line-by-Line</a>, Previous: <a href="Complete-Example.html" accesskey="p" rel="prev">Complete Example</a>, Up: <a href="Complete-Program.html" accesskey="u" rel="up">Complete Program</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Complete-Line_002dby_002dLine.html
===================================================================
--- public/doc/gnu-c/Complete-Line_002dby_002dLine.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Complete-Line_002dby_002dLine.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,100 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Complete Line-by-Line (GNU C Language Manual)</title>
+
+<meta name="description" content="Complete Line-by-Line (GNU C Language Manual)">
+<meta name="keywords" content="Complete Line-by-Line (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Complete-Program.html" rel="up" title="Complete Program">
+<link href="Compile-Example.html" rel="next" title="Compile Example">
+<link href="Complete-Explanation.html" rel="prev" title="Complete Explanation">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Complete-Line_002dby_002dLine"></span><div class="header">
+<p>
+Next: <a href="Compile-Example.html" accesskey="n" rel="next">Compile Example</a>, Previous: <a href="Complete-Explanation.html" accesskey="p" rel="prev">Complete Explanation</a>, Up: <a href="Complete-Program.html" accesskey="u" rel="up">Complete Program</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>
+</div>
+<hr>
+<span id="Complete-Program_002c-Line-by-Line"></span><h3 class="section">2.3 Complete Program, Line by Line</h3>
+
+<p>Here&rsquo;s the same example, explained line by line.
+<strong>Beginners, do you find this helpful or not?
+Would you prefer a different layout for the example?
+Please tell rms@gnu.org.</strong>
+</p>
+<div class="example">
+<pre class="example">#include &lt;stdio.h&gt;      /* <span class="roman">Include declaration of usual</span> */
+                        /*   <span class="roman">I/O functions such as <code>printf</code>.</span>  */
+                        /* <span class="roman">Most programs need these.</span>  */
+
+int                     /* <span class="roman">This function returns an <code>int</code>.</span>  */
+fib (int n)             /* <span class="roman">Its name is <code>fib</code>;</span>  */
+                        /*   <span class="roman">its argument is called <code>n</code>.</span>  */
+{                       /* <span class="roman">Start of function body.</span>  */
+  /* <span class="roman">This stops the recursion from being infinite.</span>  */
+  if (n &lt;= 2)           /* <span class="roman">If <code>n</code> is 1 or 2,</span>  */
+    return 1;           /*   <span class="roman">make <code>fib</code> return 1.</span>  */
+  else                  /* <span class="roman">otherwise, add the two previous</span>  */
+                        /* <span class="roman">fibonacci numbers.</span>  */
+    return fib (n - 1) + fib (n - 2);
+}
+
+int                     /* <span class="roman">This function returns an <code>int</code>.</span>  */
+main (void)             /* <span class="roman">Start here; ignore arguments.</span>  */
+{                       /* <span class="roman">Print message with numbers in it.</span>  */
+  printf (&quot;Fibonacci series item %d is %d\n&quot;,
+          20, fib (20));
+  return 0;             /* <span class="roman">Terminate program, report success.</span>  */
+}
+</pre></div>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Complete-Program.html
===================================================================
--- public/doc/gnu-c/Complete-Program.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Complete-Program.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,91 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Complete Program (GNU C Language Manual)</title>
+
+<meta name="description" content="Complete Program (GNU C Language Manual)">
+<meta name="keywords" content="Complete Program (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html" rel="up" title="Top">
+<link href="Complete-Example.html" rel="next" title="Complete Example">
+<link href="Iterative-Fibonacci.html" rel="prev" title="Iterative Fibonacci">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Complete-Program"></span><div class="header">
+<p>
+Next: <a href="Storage.html" accesskey="n" rel="next">Storage</a>, Previous: <a href="The-First-Example.html" accesskey="p" rel="prev">The First Example</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</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>
+</div>
+<hr>
+<span id="A-Complete-Program"></span><h2 class="chapter">2 A Complete Program</h2>
+<span id="index-complete-example-program"></span>
+<span id="index-example-program_002c-complete"></span>
+
+<p>It&rsquo;s all very well to write a Fibonacci function, but you cannot run
+it by itself.  It is a useful program, but it is not a complete
+program.
+</p>
+<p>In this chapter we present a complete program that contains the
+<code>fib</code> function.  This example shows how to make the program
+start, how to make it finish, how to do computation, and how to print
+a result.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Complete-Example.html" accesskey="1">Complete Example</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Turn the simple function into a full program.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Complete-Explanation.html" accesskey="2">Complete Explanation</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Explanation of each part of the example.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Complete-Line_002dby_002dLine.html" accesskey="3">Complete Line-by-Line</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Explaining each line of the example.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Compile-Example.html" accesskey="4">Compile Example</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Using GCC to compile the example.
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Complex-Arithmetic.html
===================================================================
--- public/doc/gnu-c/Complex-Arithmetic.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Complex-Arithmetic.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,156 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Complex Arithmetic (GNU C Language Manual)</title>
+
+<meta name="description" content="Complex Arithmetic (GNU C Language Manual)">
+<meta name="keywords" content="Complex Arithmetic (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Floating-Point-in-Depth.html" rel="up" title="Floating Point in Depth">
+<link href="Round_002dTrip-Base-Conversion.html" rel="next" title="Round-Trip Base Conversion">
+<link href="Machine-Epsilon.html" rel="prev" title="Machine Epsilon">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Complex-Arithmetic"></span><div class="header">
+<p>
+Next: <a href="Round_002dTrip-Base-Conversion.html" accesskey="n" rel="next">Round-Trip Base Conversion</a>, Previous: <a href="Machine-Epsilon.html" accesskey="p" rel="prev">Machine Epsilon</a>, Up: <a href="Floating-Point-in-Depth.html" accesskey="u" rel="up">Floating Point in Depth</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>
+</div>
+<hr>
+<span id="Complex-Arithmetic-1"></span><h3 class="section">28.19 Complex Arithmetic</h3>
+<span id="index-complex-arithmetic-in-floating_002dpoint-calculations"></span>
+<span id="index-floating_002dpoint-arithmetic-with-complex-numbers"></span>
+
+<p>We&rsquo;ve already looked at defining and referring to complex numbers
+(see <a href="Complex-Data-Types.html">Complex Data Types</a>).  What is important to discuss here are
+some issues that are unlikely to be obvious to programmers without
+extensive experience in both numerical computing, and in complex
+arithmetic in mathematics.
+</p>
+<p>The first important point is that, unlike real arithmetic, in complex
+arithmetic, the danger of significance loss is <em>pervasive</em>, and
+affects <em>every one</em> of the basic operations, and <em>almost
+all</em> of the math-library functions.  To understand why, recall the
+rules for complex multiplication and division:
+</p>
+<div class="example">
+<pre class="example">a = u + I*v              /* <span class="roman">First operand.</span> */
+b = x + I*y              /* <span class="roman">Second operand.</span> */
+
+prod = a * b
+     = (u + I*v) * (x + I*y)
+     = (u * x - v * y) + I*(v * x + u * y)
+
+quo  = a / b
+     = (u + I*v) / (x + I*y)
+     = [(u + I*v) * (x - I*y)] / [(x + I*y) * (x - I*y)]
+     = [(u * x + v * y) + I*(v * x - u * y)] / (x**2 + y**2)
+</pre></div>
+
+<p>There are four critical observations about those formulas:
+</p>
+<ul>
+<li> the multiplications on the right-hand side introduce the
+possibility of premature underflow or overflow;
+
+</li><li> the products must be accurate to twice working precision;
+
+</li><li> there is <em>always</em> one subtraction on the right-hand sides
+that is subject to catastrophic significance loss; and
+
+</li><li> complex multiplication has up to <em>six</em> rounding errors, and
+complex division has <em>ten</em> rounding errors.
+
+</li></ul>
+
+<span id="index-branch-cuts"></span>
+<p>Another point that needs careful study is the fact that many functions
+in complex arithmetic have <em>branch cuts</em>.  You can view a
+function with a complex argument, <code>f (z)</code>, as <code>f (x + I*y)</code>,
+and thus, it defines a relation between a point <code>(x, y)</code> on the
+complex plane with an elevation value on a surface.  A branch cut
+looks like a tear in that surface, so approaching the cut from one
+side produces a particular value, and from the other side, a quite
+different value.  Great care is needed to handle branch cuts properly,
+and even small numerical errors can push a result from one side to the
+other, radically changing the returned value.  As we reported earlier,
+correct handling of the sign of zero is critically important for
+computing near branch cuts.
+</p>
+<p>The best advice that we can give to programmers who need complex
+arithmetic is to always use the <em>highest precision available</em>,
+and then to carefully check the results of test calculations to gauge
+the likely accuracy of the computed results.  It is easy to supply
+test values of real and imaginary parts where all five basic
+operations in complex arithmetic, and almost all of the complex math
+functions, lose <em>all</em> significance, and fail to produce even a
+single correct digit.
+</p>
+<p>Even though complex arithmetic makes some programming tasks
+easier, it may be numerically preferable to rework the algorithm
+so that it can be carried out in real arithmetic.  That is
+commonly possible in matrix algebra.
+</p>
+<p>GNU C can perform code optimization on complex number multiplication and
+division if certain boundary checks will not be needed.  The
+command-line option <samp>-fcx-limited-range</samp> tells the compiler that
+a range reduction step is not needed when performing complex division,
+and that there is no need to check if a complex multiplication or
+division results in the value <code>Nan + I*NaN</code>.  By default these
+checks are enabled.  You can explicitly enable them with the
+<samp>-fno-cx-limited-range</samp> option.
+</p>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Round_002dTrip-Base-Conversion.html" accesskey="n" rel="next">Round-Trip Base Conversion</a>, Previous: <a href="Machine-Epsilon.html" accesskey="p" rel="prev">Machine Epsilon</a>, Up: <a href="Floating-Point-in-Depth.html" accesskey="u" rel="up">Floating Point in Depth</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Complex-Data-Types.html
===================================================================
--- public/doc/gnu-c/Complex-Data-Types.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Complex-Data-Types.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,143 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Complex Data Types (GNU C Language Manual)</title>
+
+<meta name="description" content="Complex Data Types (GNU C Language Manual)">
+<meta name="keywords" content="Complex Data Types (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Primitive-Types.html" rel="up" title="Primitive Types">
+<link href="The-Void-Type.html" rel="next" title="The Void Type">
+<link href="Floating_002dPoint-Data-Types.html" rel="prev" title="Floating-Point Data Types">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Complex-Data-Types"></span><div class="header">
+<p>
+Next: <a href="The-Void-Type.html" accesskey="n" rel="next">The Void Type</a>, Previous: <a href="Floating_002dPoint-Data-Types.html" accesskey="p" rel="prev">Floating-Point Data Types</a>, Up: <a href="Primitive-Types.html" accesskey="u" rel="up">Primitive Types</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>
+</div>
+<hr>
+<span id="Complex-Data-Types-1"></span><h3 class="section">11.3 Complex Data Types</h3>
+<span id="index-complex-numbers"></span>
+<span id="index-types_002c-complex"></span>
+<span id="index-_005fComplex-keyword"></span>
+<span id="index-_005f_005fcomplex_005f_005f-keyword"></span>
+<span id="index-_005fComplex"></span>
+<span id="index-_005f_005fcomplex_005f_005f"></span>
+
+<p>Complex numbers can include both a real part and an imaginary part.
+The numeric constants covered above have real-numbered values.  An
+imaginary-valued constant is an ordinary real-valued constant followed
+by &lsquo;<samp>i</samp>&rsquo;.
+</p>
+<p>To declare numeric variables as complex, use the <code>_Complex</code>
+keyword.<a id="DOCF4" href="#FOOT4"><sup>4</sup></a>  The
+standard C complex data types are floating point,
+</p>
+<div class="example">
+<pre class="example">_Complex float foo;
+_Complex double bar;
+_Complex long double quux;
+</pre></div>
+
+<p>but GNU C supports integer complex types as well.
+</p>
+<p>Since <code>_Complex</code> is a keyword just like <code>float</code> and
+<code>double</code> and <code>long</code>, the keywords can appear in any order,
+but the order shown above seems most logical.
+</p>
+<p>GNU C supports constants for complex values; for instance, <code>4.0 +
+3.0i</code> has the value 4 + 3i as type <code>_Complex double</code>.
+See <a href="Imaginary-Constants.html">Imaginary Constants</a>.
+</p>
+<p>To pull the real and imaginary parts of the number back out, GNU C
+provides the keywords <code>__real__</code> and <code>__imag__</code>:
+</p>
+<div class="example">
+<pre class="example">_Complex double foo = 4.0 + 3.0i;
+
+double a = __real__ foo; /* <span class="roman"><code>a</code> is now 4.0.</span> */
+double b = __imag__ foo; /* <span class="roman"><code>b</code> is now 3.0.</span> */
+</pre></div>
+
+<p>Standard C does not include these keywords, and instead relies on
+functions defined in <code>complex.h</code> for accessing the real and
+imaginary parts of a complex number: <code>crealf</code>, <code>creal</code>, and
+<code>creall</code> extract the real part of a float, double, or long double
+complex number, respectively; <code>cimagf</code>, <code>cimag</code>, and
+<code>cimagl</code> extract the imaginary part.
+</p>
+<span id="index-complex-conjugation"></span>
+<p>GNU C also defines &lsquo;<samp>~</samp>&rsquo; as an operator for complex conjugation,
+which means negating the imaginary part of a complex number:
+</p>
+<div class="example">
+<pre class="example">_Complex double foo = 4.0 + 3.0i;
+_Complex double bar = ~foo; /* <span class="roman"><code>bar</code> is now 4 - 3i.</span> */
+</pre></div>
+
+<p>For standard C compatibility, you can use the appropriate library
+function: <code>conjf</code>, <code>conj</code>, or <code>confl</code>.
+</p>
+<div class="footnote">
+<hr>
+<h4 class="footnotes-heading">Footnotes</h4>
+
+<h5><a id="FOOT4" href="#DOCF4">(4)</a></h3>
+<p>For compatibility with older versions of GNU C, the
+keyword <code>__complex__</code> is also allowed.  Going forward, however,
+use the new <code>_Complex</code> keyword as defined in ISO C11.</p>
+</div>
+<hr>
+<div class="header">
+<p>
+Next: <a href="The-Void-Type.html" accesskey="n" rel="next">The Void Type</a>, Previous: <a href="Floating_002dPoint-Data-Types.html" accesskey="p" rel="prev">Floating-Point Data Types</a>, Up: <a href="Primitive-Types.html" accesskey="u" rel="up">Primitive Types</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Computed-Includes.html
===================================================================
--- public/doc/gnu-c/Computed-Includes.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Computed-Includes.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,150 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Computed Includes (GNU C Language Manual)</title>
+
+<meta name="description" content="Computed Includes (GNU C Language Manual)">
+<meta name="keywords" content="Computed Includes (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Header-Files.html" rel="up" title="Header Files">
+<link href="Macros.html" rel="next" title="Macros">
+<link href="Once_002dOnly-Headers.html" rel="prev" title="Once-Only Headers">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Computed-Includes"></span><div class="header">
+<p>
+Previous: <a href="Once_002dOnly-Headers.html" accesskey="p" rel="prev">Once-Only Headers</a>, Up: <a href="Header-Files.html" accesskey="u" rel="up">Header Files</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>
+</div>
+<hr>
+<span id="Computed-Includes-1"></span><h4 class="subsection">26.4.5 Computed Includes</h4>
+<span id="index-computed-includes"></span>
+<span id="index-macros-in-include"></span>
+
+<p>Sometimes it is necessary to select one of several different header
+files to be included into your program.  They might specify
+configuration parameters to be used on different sorts of operating
+systems, for instance.  You could do this with a series of conditionals,
+</p>
+<div class="example">
+<pre class="example">#if SYSTEM_1
+# include &quot;system_1.h&quot;
+#elif SYSTEM_2
+# include &quot;system_2.h&quot;
+#elif SYSTEM_3
+/* <span class="roman">&hellip;</span> */
+#endif
+</pre></div>
+
+<p>That rapidly becomes tedious.  Instead, GNU C offers the ability to use
+a macro for the header name.  This is called a <em>computed include</em>.
+Instead of writing a header name as the direct argument of
+<code>#include</code>, you simply put a macro name there instead:
+</p>
+<div class="example">
+<pre class="example">#define SYSTEM_H &quot;system_1.h&quot;
+/* <span class="roman">&hellip;</span> */
+#include SYSTEM_H
+</pre></div>
+
+<p><code>SYSTEM_H</code> is expanded, then <samp>system_1.h</samp> is included as if
+the <code>#include</code> had been written with that name.  <code>SYSTEM_H</code>
+could be defined by your Makefile with a <samp>-D</samp> option.
+</p>
+<p>You must be careful when you define such a macro.  <code>#define</code>
+saves tokens, not text.  GCC has no way of knowing that the macro will
+be used as the argument of <code>#include</code>, so it generates ordinary
+tokens, not a header name.  This is unlikely to cause problems if you
+use double-quote includes, which are syntactically similar to string
+constants.  If you use angle brackets, however, you may have trouble.
+</p>
+<p>The syntax of a computed include is actually a bit more general than the
+above.  If the first non-whitespace character after <code>#include</code> is
+not &lsquo;<samp>&quot;</samp>&rsquo; or &lsquo;<samp>&lt;</samp>&rsquo;, then the entire line is macro-expanded
+like running text would be.
+</p>
+<p>If the line expands to a single string constant, the contents of that
+string constant are the file to be included.  Preprocessing does not
+re-examine the string for embedded quotes, but neither does it process
+backslash escapes in the string.  Therefore
+</p>
+<div class="example">
+<pre class="example">#define HEADER &quot;a\&quot;b&quot;
+#include HEADER
+</pre></div>
+
+<p>looks for a file named <samp>a\&quot;b</samp>.  Preprocessing searches for the
+file according to the rules for double-quoted includes.
+</p>
+<p>If the line expands to a token stream beginning with a &lsquo;<samp>&lt;</samp>&rsquo; token
+and including a &lsquo;<samp>&gt;</samp>&rsquo; token, then the tokens between the &lsquo;<samp>&lt;</samp>&rsquo; and
+the first &lsquo;<samp>&gt;</samp>&rsquo; are combined to form the filename to be included.
+Any whitespace between tokens is reduced to a single space; then any
+space after the initial &lsquo;<samp>&lt;</samp>&rsquo; is retained, but a trailing space
+before the closing &lsquo;<samp>&gt;</samp>&rsquo; is ignored.  Preprocessing searches for the file
+according to the rules for angle-bracket includes.
+</p>
+<p>In either case, if there are any tokens on the line after the file name,
+an error occurs and the directive is not processed.  It is also an error
+if the result of expansion does not match either of the two expected
+forms.
+</p>
+<p>These rules are implementation-defined behavior according to the C
+standard.  To minimize the risk of different compilers interpreting your
+computed includes differently, we recommend you use only a single
+object-like macro that expands to a string constant.  That also
+makes it clear to people reading your program.
+</p>
+<hr>
+<div class="header">
+<p>
+Previous: <a href="Once_002dOnly-Headers.html" accesskey="p" rel="prev">Once-Only Headers</a>, Up: <a href="Header-Files.html" accesskey="u" rel="up">Header Files</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Concatenation.html
===================================================================
--- public/doc/gnu-c/Concatenation.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Concatenation.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,163 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Concatenation (GNU C Language Manual)</title>
+
+<meta name="description" content="Concatenation (GNU C Language Manual)">
+<meta name="keywords" content="Concatenation (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Macros.html" rel="up" title="Macros">
+<link href="Variadic-Macros.html" rel="next" title="Variadic Macros">
+<link href="Stringification.html" rel="prev" title="Stringification">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Concatenation"></span><div class="header">
+<p>
+Next: <a href="Variadic-Macros.html" accesskey="n" rel="next">Variadic Macros</a>, Previous: <a href="Stringification.html" accesskey="p" rel="prev">Stringification</a>, Up: <a href="Macros.html" accesskey="u" rel="up">Macros</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>
+</div>
+<hr>
+<span id="Concatenation-1"></span><h4 class="subsection">26.5.5 Concatenation</h4>
+<span id="index-concatenation"></span>
+<span id="index-token-pasting"></span>
+<span id="index-token-concatenation"></span>
+<span id="index-_0023_0023-operator"></span>
+
+<p>It is often useful to merge two tokens into one while expanding macros.
+This is called <em>token pasting</em> or <em>token concatenation</em>.  The
+<code>##</code> preprocessing operator performs token pasting.  When a macro
+is expanded, the two tokens on either side of each <code>##</code> operator
+are combined into a single token, which then replaces the <code>##</code> and
+the two original tokens in the macro expansion.  Usually both will be
+identifiers, or one will be an identifier and the other a preprocessing
+number.  When pasted, they make a longer identifier.
+</p>
+<p>Concatenation into an identifier isn&rsquo;t the only valid case.  It is
+also possible to concatenate two numbers (or a number and a name, such
+as <code>1.5</code> and <code>e3</code>) into a number.  Also, multi-character
+operators such as <code>+=</code> can be formed by token pasting.
+</p>
+<p>However, two tokens that don&rsquo;t together form a valid token cannot be
+pasted together.  For example, you cannot concatenate <code>x</code> with
+<code>+</code>, not in either order.  Trying this issues a warning and keeps
+the two tokens separate.  Whether it puts white space between the
+tokens is undefined.  It is common to find unnecessary uses of
+<code>##</code> in complex macros.  If you get this warning, it is likely
+that you can simply remove the <code>##</code>.
+</p>
+<p>The tokens combined by <code>##</code> could both come from the macro body,
+but then you could just as well write them as one token in the first place.
+Token pasting is useful when one or both of the tokens comes from a
+macro argument.  If either of the tokens next to an <code>##</code> is a
+parameter name, it is replaced by its actual argument before <code>##</code>
+executes.  As with stringification, the actual argument is not
+macro-expanded first.  If the argument is empty, that <code>##</code> has no
+effect.
+</p>
+<p>Keep in mind that preprocessing converts comments to whitespace before
+it looks for uses of macros.  Therefore, you cannot create a comment
+by concatenating &lsquo;<samp>/</samp>&rsquo; and &lsquo;<samp>*</samp>&rsquo;.  You can put as much
+whitespace between <code>##</code> and its operands as you like, including
+comments, and you can put comments in arguments that will be
+concatenated.
+</p>
+<p>It is an error to use <code>##</code> at the beginning or end of a macro
+body.
+</p>
+<p>Multiple <code>##</code> operators are handled left-to-right, so that
+&lsquo;<samp>1 ## e ## -2</samp>&rsquo; pastes into &lsquo;<samp>1e-2</samp>&rsquo;.  (Right-to-left
+processing would first generate &lsquo;<samp>e-2</samp>&rsquo;, which is an invalid token.)
+When <code>#</code> and <code>##</code> are used together, they are all handled
+left-to-right.
+</p>
+<p>Consider a C program that interprets named commands.  There probably
+needs to be a table of commands, perhaps an array of structures declared
+as follows:
+</p>
+<div class="example">
+<pre class="example">struct command
+{
+  char *name;
+  void (*function) (void);
+};
+</pre><pre class="example">
+
+</pre><pre class="example">struct command commands[] =
+{
+  { &quot;quit&quot;, quit_command },
+  { &quot;help&quot;, help_command },
+  /* <span class="roman">&hellip;</span> */
+};
+</pre></div>
+
+<p>It would be cleaner not to have to write each command name twice, once
+in the string constant and once in the function name.  A macro that
+takes the name of a command as an argument can make this unnecessary.
+It can create the string constant with stringification, and the
+function name by concatenating the argument with &lsquo;<samp>_command</samp>&rsquo;.
+Here is how it is done:
+</p>
+<div class="example">
+<pre class="example">#define COMMAND(NAME)  { #NAME, NAME ## _command }
+
+struct command commands[] =
+{
+  COMMAND (quit),
+  COMMAND (help),
+  /* <span class="roman">&hellip;</span> */
+};
+</pre></div>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Variadic-Macros.html" accesskey="n" rel="next">Variadic Macros</a>, Previous: <a href="Stringification.html" accesskey="p" rel="prev">Stringification</a>, Up: <a href="Macros.html" accesskey="u" rel="up">Macros</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Concept-Index.html
===================================================================
--- public/doc/gnu-c/Concept-Index.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Concept-Index.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,846 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Concept Index (GNU C Language Manual)</title>
+
+<meta name="description" content="Concept Index (GNU C Language Manual)">
+<meta name="keywords" content="Concept Index (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html" rel="up" title="Top">
+<link href="Symbol-Index.html" rel="prev" title="Symbol Index">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Concept-Index"></span><div class="header">
+<p>
+Previous: <a href="Symbol-Index.html" accesskey="p" rel="prev">Symbol Index</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</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>
+</div>
+<hr>
+<span id="Concept-Index-1"></span><h2 class="unnumbered">Concept Index</h2>
+
+<table><tr><th valign="top">Jump to: &nbsp; </th><td><a class="summary-letter" href="#Concept-Index_cp_symbol-1"><b>#</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Concept-Index_cp_symbol-2"><b>?</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Concept-Index_cp_symbol-3"><b>\</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Concept-Index_cp_symbol-4"><b>_</b></a>
+ &nbsp; 
+<br>
+<a class="summary-letter" href="#Concept-Index_cp_letter-A"><b>A</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Concept-Index_cp_letter-B"><b>B</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Concept-Index_cp_letter-C"><b>C</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Concept-Index_cp_letter-D"><b>D</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Concept-Index_cp_letter-E"><b>E</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Concept-Index_cp_letter-F"><b>F</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Concept-Index_cp_letter-G"><b>G</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Concept-Index_cp_letter-H"><b>H</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Concept-Index_cp_letter-I"><b>I</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Concept-Index_cp_letter-K"><b>K</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Concept-Index_cp_letter-L"><b>L</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Concept-Index_cp_letter-M"><b>M</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Concept-Index_cp_letter-N"><b>N</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Concept-Index_cp_letter-O"><b>O</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Concept-Index_cp_letter-P"><b>P</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Concept-Index_cp_letter-Q"><b>Q</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Concept-Index_cp_letter-R"><b>R</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Concept-Index_cp_letter-S"><b>S</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Concept-Index_cp_letter-T"><b>T</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Concept-Index_cp_letter-U"><b>U</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Concept-Index_cp_letter-V"><b>V</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Concept-Index_cp_letter-W"><b>W</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Concept-Index_cp_letter-Z"><b>Z</b></a>
+ &nbsp; 
+</td></tr></table>
+<table class="index-cp" border="0">
+<tr><td></td><th align="left">Index Entry</th><td>&nbsp;</td><th align="left"> Section</th></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_symbol-1">#</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Stringification.html#index-_0023-operator"><code>#</code> operator</a>:</td><td>&nbsp;</td><td valign="top"><a href="Stringification.html">Stringification</a></td></tr>
+<tr><td></td><td valign="top"><a href="Concatenation.html#index-_0023_0023-operator"><code>##</code> operator</a>:</td><td>&nbsp;</td><td valign="top"><a href="Concatenation.html">Concatenation</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_symbol-2">?</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Conditional-Branches.html#index-_003f_003a-side-effect">?: side effect</a>:</td><td>&nbsp;</td><td valign="top"><a href="Conditional-Branches.html">Conditional Branches</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_symbol-3">\</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Character-Constants.html#index-_005ca">&lsquo;<samp>\a</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="Character-Constants.html">Character Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="Character-Constants.html#index-_005cb">&lsquo;<samp>\b</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="Character-Constants.html">Character Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="Character-Constants.html#index-_005ce">&lsquo;<samp>\e</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="Character-Constants.html">Character Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="Character-Constants.html#index-_005cf">&lsquo;<samp>\f</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="Character-Constants.html">Character Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="Character-Constants.html#index-_005cn">&lsquo;<samp>\n</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="Character-Constants.html">Character Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="Character-Constants.html#index-_005cr">&lsquo;<samp>\r</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="Character-Constants.html">Character Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="Character-Constants.html#index-_005ct">&lsquo;<samp>\t</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="Character-Constants.html">Character Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="Character-Constants.html#index-_005cv">&lsquo;<samp>\v</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="Character-Constants.html">Character Constants</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_symbol-4">_</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Macros-and-Auto-Type.html#index-_005f-in-variables-in-macros">&lsquo;<samp>_</samp>&rsquo; in variables in macros</a>:</td><td>&nbsp;</td><td valign="top"><a href="Macros-and-Auto-Type.html">Macros and Auto Type</a></td></tr>
+<tr><td></td><td valign="top"><a href="Complex-Data-Types.html#index-_005fComplex-keyword"><code>_Complex</code> keyword</a>:</td><td>&nbsp;</td><td valign="top"><a href="Complex-Data-Types.html">Complex Data Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Imaginary-Constants.html#index-_005fComplex_005fI">_Complex_I</a>:</td><td>&nbsp;</td><td valign="top"><a href="Imaginary-Constants.html">Imaginary Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="Packed-Structures.html#index-_005f_005fattribute_005f_005f_0028_0028packed_0029_0029"><code>__attribute__((packed))</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Packed-Structures.html">Packed Structures</a></td></tr>
+<tr><td></td><td valign="top"><a href="Complex-Data-Types.html#index-_005f_005fcomplex_005f_005f-keyword"><code>__complex__</code> keyword</a>:</td><td>&nbsp;</td><td valign="top"><a href="Complex-Data-Types.html">Complex Data Types</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-A">A</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Accessing-Array-Elements.html#index-accessing-array-elements">accessing array elements</a>:</td><td>&nbsp;</td><td valign="top"><a href="Accessing-Array-Elements.html">Accessing Array Elements</a></td></tr>
+<tr><td></td><td valign="top"><a href="Basic-Arithmetic.html#index-addition-operator">addition operator</a>:</td><td>&nbsp;</td><td valign="top"><a href="Basic-Arithmetic.html">Basic Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Labels-as-Values.html#index-address-of-a-label">address of a label</a>:</td><td>&nbsp;</td><td valign="top"><a href="Labels-as-Values.html">Labels as Values</a></td></tr>
+<tr><td></td><td valign="top"><a href="Address-of-Data.html#index-address_002dof-operator">address-of operator</a>:</td><td>&nbsp;</td><td valign="top"><a href="Address-of-Data.html">Address of Data</a></td></tr>
+<tr><td></td><td valign="top"><a href="Aliasing.html#index-aliasing-_0028of-storage_0029">aliasing (of storage)</a>:</td><td>&nbsp;</td><td valign="top"><a href="Aliasing.html">Aliasing</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Alignment.html#index-alignment-of-type">alignment of type</a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Alignment.html">Type Alignment</a></td></tr>
+<tr><td></td><td valign="top"><a href="Dynamic-Memory-Allocation.html#index-allocating-memory-dynamically">allocating memory dynamically</a>:</td><td>&nbsp;</td><td valign="top"><a href="Dynamic-Memory-Allocation.html">Dynamic Memory Allocation</a></td></tr>
+<tr><td></td><td valign="top"><a href="Allocating-File_002dScope.html#index-allocation-file_002dscope-variables">allocation file-scope variables</a>:</td><td>&nbsp;</td><td valign="top"><a href="Allocating-File_002dScope.html">Allocating File-Scope</a></td></tr>
+<tr><td></td><td valign="top"><a href="Argument-Promotions.html#index-argument-promotions">argument promotions</a>:</td><td>&nbsp;</td><td valign="top"><a href="Argument-Promotions.html">Argument Promotions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Macro-Arguments.html#index-arguments">arguments</a>:</td><td>&nbsp;</td><td valign="top"><a href="Macro-Arguments.html">Macro Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Macro-Arguments.html#index-arguments-in-macro-definitions">arguments in macro definitions</a>:</td><td>&nbsp;</td><td valign="top"><a href="Macro-Arguments.html">Macro Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-arithmetic-operators">arithmetic operators</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Pointer-Arithmetic.html#index-arithmetic_002c-pointer">arithmetic, pointer</a>:</td><td>&nbsp;</td><td valign="top"><a href="Pointer-Arithmetic.html">Pointer Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arrays.html#index-array">array</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arrays.html">Arrays</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arrays-as-Parameters.html#index-array-as-parameters">array as parameters</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arrays-as-Parameters.html">Arrays as Parameters</a></td></tr>
+<tr><td></td><td valign="top"><a href="Accessing-Array-Elements.html#index-array-elements_002c-accessing">array elements, accessing</a>:</td><td>&nbsp;</td><td valign="top"><a href="Accessing-Array-Elements.html">Accessing Array Elements</a></td></tr>
+<tr><td></td><td valign="top"><a href="Array-Example.html#index-array-example">array example</a>:</td><td>&nbsp;</td><td valign="top"><a href="Array-Example.html">Array Example</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flexible-Array-Fields.html#index-array-fields_002c-flexible">array fields, flexible</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flexible-Array-Fields.html">Flexible Array Fields</a></td></tr>
+<tr><td></td><td valign="top"><a href="Zero-Length.html#index-array-of-length-zero">array of length zero</a>:</td><td>&nbsp;</td><td valign="top"><a href="Zero-Length.html">Zero Length</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arrays-of-Variable-Length.html#index-array-of-variable-length">array of variable length</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arrays-of-Variable-Length.html">Arrays of Variable Length</a></td></tr>
+<tr><td></td><td valign="top"><a href="Variable_002dLength-Array-Parameters.html#index-array-parameters_002c-variable_002dlength">array parameters, variable-length</a>:</td><td>&nbsp;</td><td valign="top"><a href="Variable_002dLength-Array-Parameters.html">Variable-Length Array Parameters</a></td></tr>
+<tr><td></td><td valign="top"><a href="Incomplete-Array-Types.html#index-array-types_002c-incomplete">array types, incomplete</a>:</td><td>&nbsp;</td><td valign="top"><a href="Incomplete-Array-Types.html">Incomplete Array Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Constructing-Array-Values.html#index-array-values_002c-constructing">array values, constructing</a>:</td><td>&nbsp;</td><td valign="top"><a href="Constructing-Array-Values.html">Constructing Array Values</a></td></tr>
+<tr><td></td><td valign="top"><a href="Declaring-an-Array.html#index-array_002c-declaring">array, declaring</a>:</td><td>&nbsp;</td><td valign="top"><a href="Declaring-an-Array.html">Declaring an Array</a></td></tr>
+<tr><td></td><td valign="top"><a href="Declaring-Arrays-and-Pointers.html#index-array_002c-declaring-1">array, declaring</a>:</td><td>&nbsp;</td><td valign="top"><a href="Declaring-Arrays-and-Pointers.html">Declaring Arrays and Pointers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Multidimensional-Arrays.html#index-array_002c-layout-in-memory">array, layout in memory</a>:</td><td>&nbsp;</td><td valign="top"><a href="Multidimensional-Arrays.html">Multidimensional Arrays</a></td></tr>
+<tr><td></td><td valign="top"><a href="Multidimensional-Arrays.html#index-array_002c-multidimensional">array, multidimensional</a>:</td><td>&nbsp;</td><td valign="top"><a href="Multidimensional-Arrays.html">Multidimensional Arrays</a></td></tr>
+<tr><td></td><td valign="top"><a href="Pointers-and-Arrays.html#index-arrays-and-pointers">arrays and pointers</a>:</td><td>&nbsp;</td><td valign="top"><a href="Pointers-and-Arrays.html">Pointers and Arrays</a></td></tr>
+<tr><td></td><td valign="top"><a href="Assigning-Function-Pointers.html#index-assigning-function-pointers">assigning function pointers</a>:</td><td>&nbsp;</td><td valign="top"><a href="Assigning-Function-Pointers.html">Assigning Function Pointers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Structure-Assignment.html#index-assigning-structures">assigning structures</a>:</td><td>&nbsp;</td><td valign="top"><a href="Structure-Assignment.html">Structure Assignment</a></td></tr>
+<tr><td></td><td valign="top"><a href="Assignment-Expressions.html#index-assignment-expressions">assignment expressions</a>:</td><td>&nbsp;</td><td valign="top"><a href="Assignment-Expressions.html">Assignment Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Assignment-in-Subexpressions.html#index-assignment-in-subexpressions">assignment in subexpressions</a>:</td><td>&nbsp;</td><td valign="top"><a href="Assignment-in-Subexpressions.html">Assignment in Subexpressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Assignment-Type-Conversions.html#index-assignment-type-conversions">assignment type conversions</a>:</td><td>&nbsp;</td><td valign="top"><a href="Assignment-Type-Conversions.html">Assignment Type Conversions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Modifying-Assignment.html#index-assignment_002c-modifying">assignment, modifying</a>:</td><td>&nbsp;</td><td valign="top"><a href="Modifying-Assignment.html">Modifying Assignment</a></td></tr>
+<tr><td></td><td valign="top"><a href="Simple-Assignment.html#index-assignment_002c-simple">assignment, simple</a>:</td><td>&nbsp;</td><td valign="top"><a href="Simple-Assignment.html">Simple Assignment</a></td></tr>
+<tr><td></td><td valign="top"><a href="Associativity-and-Ordering.html#index-associativity-and-ordering">associativity and ordering</a>:</td><td>&nbsp;</td><td valign="top"><a href="Associativity-and-Ordering.html">Associativity and Ordering</a></td></tr>
+<tr><td></td><td valign="top"><a href="Attributes.html#index-attributes">attributes</a>:</td><td>&nbsp;</td><td valign="top"><a href="Attributes.html">Attributes</a></td></tr>
+<tr><td></td><td valign="top"><a href="auto-and-register.html#index-auto-declarations"><code>auto</code> declarations</a>:</td><td>&nbsp;</td><td valign="top"><a href="auto-and-register.html">auto and register</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-B">B</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Character-Constants.html#index-backspace">backspace</a>:</td><td>&nbsp;</td><td valign="top"><a href="Character-Constants.html">Character Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="Round_002dTrip-Base-Conversion.html#index-base-conversion-_0028floating-point_0029">base conversion (floating point)</a>:</td><td>&nbsp;</td><td valign="top"><a href="Round_002dTrip-Base-Conversion.html">Round-Trip Base Conversion</a></td></tr>
+<tr><td></td><td valign="top"><a href="Character-Constants.html#index-bell-character">bell character</a>:</td><td>&nbsp;</td><td valign="top"><a href="Character-Constants.html">Character Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-Constants.html#index-binary-integer-constants">binary integer constants</a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-Constants.html">Integer Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="Binary-Operator-Grammar.html#index-binary-operator-grammar">binary operator grammar</a>:</td><td>&nbsp;</td><td valign="top"><a href="Binary-Operator-Grammar.html">Binary Operator Grammar</a></td></tr>
+<tr><td></td><td valign="top"><a href="Bit-Fields.html#index-bit-fields">bit fields</a>:</td><td>&nbsp;</td><td valign="top"><a href="Bit-Fields.html">Bit Fields</a></td></tr>
+<tr><td></td><td valign="top"><a href="Bitwise-Operations.html#index-bitwise-operators">bitwise operators</a>:</td><td>&nbsp;</td><td valign="top"><a href="Bitwise-Operations.html">Bitwise Operations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Blocks.html#index-block">block</a>:</td><td>&nbsp;</td><td valign="top"><a href="Blocks.html">Blocks</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scope.html#index-block-scope">block scope</a>:</td><td>&nbsp;</td><td valign="top"><a href="Scope.html">Scope</a></td></tr>
+<tr><td></td><td valign="top"><a href="Boolean-Type.html#index-boolean-type">boolean type</a>:</td><td>&nbsp;</td><td valign="top"><a href="Boolean-Type.html">Boolean Type</a></td></tr>
+<tr><td></td><td valign="top"><a href="Complex-Arithmetic.html#index-branch-cuts">branch cuts</a>:</td><td>&nbsp;</td><td valign="top"><a href="Complex-Arithmetic.html">Complex Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Conditional-Branches.html#index-branches-of-conditional-expression">branches of conditional expression</a>:</td><td>&nbsp;</td><td valign="top"><a href="Conditional-Branches.html">Conditional Branches</a></td></tr>
+<tr><td></td><td valign="top"><a href="break-Statement.html#index-break-statement"><code>break</code> statement</a>:</td><td>&nbsp;</td><td valign="top"><a href="break-Statement.html">break Statement</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage.html#index-bytes">bytes</a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage.html">Storage</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-C">C</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Call-Semantics.html#index-call_002dby_002dvalue">call-by-value</a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Call-Semantics.html">Function Call Semantics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Calling-Function-Pointers.html#index-calling-function-pointers">calling function pointers</a>:</td><td>&nbsp;</td><td valign="top"><a href="Calling-Function-Pointers.html">Calling Function Pointers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Calls.html#index-calling-functions">calling functions</a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Calls.html">Function Calls</a></td></tr>
+<tr><td></td><td valign="top"><a href="Whitespace.html#index-carriage-return-in-source">carriage return in source</a>:</td><td>&nbsp;</td><td valign="top"><a href="Whitespace.html">Whitespace</a></td></tr>
+<tr><td></td><td valign="top"><a href="Designated-Inits.html#index-case-labels-in-initializers">case labels in initializers</a>:</td><td>&nbsp;</td><td valign="top"><a href="Designated-Inits.html">Designated Inits</a></td></tr>
+<tr><td></td><td valign="top"><a href="Identifiers.html#index-case-of-letters-in-identifiers">case of letters in identifiers</a>:</td><td>&nbsp;</td><td valign="top"><a href="Identifiers.html">Identifiers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Case-Ranges.html#index-case-ranges">case ranges</a>:</td><td>&nbsp;</td><td valign="top"><a href="Case-Ranges.html">Case Ranges</a></td></tr>
+<tr><td></td><td valign="top"><a href="Explicit-Type-Conversion.html#index-cast">cast</a>:</td><td>&nbsp;</td><td valign="top"><a href="Explicit-Type-Conversion.html">Explicit Type Conversion</a></td></tr>
+<tr><td></td><td valign="top"><a href="Cast-to-Union.html#index-cast-to-a-union">cast to a union</a>:</td><td>&nbsp;</td><td valign="top"><a href="Cast-to-Union.html">Cast to Union</a></td></tr>
+<tr><td></td><td valign="top"><a href="Character-Constants.html#index-character-constants">character constants</a>:</td><td>&nbsp;</td><td valign="top"><a href="Character-Constants.html">Character Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="Characters.html#index-character-set">character set</a>:</td><td>&nbsp;</td><td valign="top"><a href="Characters.html">Characters</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-Representations.html#index-CHAR_005fBIT"><code>CHAR_BIT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-Representations.html">Integer Representations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Label-Value-Caveats.html#index-cloning">cloning</a>:</td><td>&nbsp;</td><td valign="top"><a href="Label-Value-Caveats.html">Label Value Caveats</a></td></tr>
+<tr><td></td><td valign="top"><a href="Combining-Variable-Declarations.html#index-combining-variable-declarations">combining variable declarations</a>:</td><td>&nbsp;</td><td valign="top"><a href="Combining-Variable-Declarations.html">Combining Variable Declarations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Comma-Operator.html#index-comma-operator">comma operator</a>:</td><td>&nbsp;</td><td valign="top"><a href="Comma-Operator.html">Comma Operator</a></td></tr>
+<tr><td></td><td valign="top"><a href="Command_002dline-Parameters.html#index-command_002dline-parameters">command-line parameters</a>:</td><td>&nbsp;</td><td valign="top"><a href="Command_002dline-Parameters.html">Command-line Parameters</a></td></tr>
+<tr><td></td><td valign="top"><a href="Deleted-Code.html#index-commenting-out-code">commenting out code</a>:</td><td>&nbsp;</td><td valign="top"><a href="Deleted-Code.html">Deleted Code</a></td></tr>
+<tr><td></td><td valign="top"><a href="Comments.html#index-comments">comments</a>:</td><td>&nbsp;</td><td valign="top"><a href="Comments.html">Comments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Common-Type.html#index-common-type">common type</a>:</td><td>&nbsp;</td><td valign="top"><a href="Common-Type.html">Common Type</a></td></tr>
+<tr><td></td><td valign="top"><a href="Pointer-Comparison.html#index-comparison_002c-pointer">comparison, pointer</a>:</td><td>&nbsp;</td><td valign="top"><a href="Pointer-Comparison.html">Pointer Comparison</a></td></tr>
+<tr><td></td><td valign="top"><a href="Numeric-Comparisons.html#index-comparisons">comparisons</a>:</td><td>&nbsp;</td><td valign="top"><a href="Numeric-Comparisons.html">Numeric Comparisons</a></td></tr>
+<tr><td></td><td valign="top"><a href="Compatible-Types.html#index-compatible-types">compatible types</a>:</td><td>&nbsp;</td><td valign="top"><a href="Compatible-Types.html">Compatible Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Compilation.html#index-compilation-module">compilation module</a>:</td><td>&nbsp;</td><td valign="top"><a href="Compilation.html">Compilation</a></td></tr>
+<tr><td></td><td valign="top"><a href="Signed-Overflow.html#index-compiler-options-for-integer-overflow">compiler options for integer overflow</a>:</td><td>&nbsp;</td><td valign="top"><a href="Signed-Overflow.html">Signed Overflow</a></td></tr>
+<tr><td></td><td valign="top"><a href="Compile-Example.html#index-compiling">compiling</a>:</td><td>&nbsp;</td><td valign="top"><a href="Compile-Example.html">Compile Example</a></td></tr>
+<tr><td></td><td valign="top"><a href="Complete-Program.html#index-complete-example-program">complete example program</a>:</td><td>&nbsp;</td><td valign="top"><a href="Complete-Program.html">Complete Program</a></td></tr>
+<tr><td></td><td valign="top"><a href="Complex-Arithmetic.html#index-complex-arithmetic-in-floating_002dpoint-calculations">complex arithmetic in floating-point calculations</a>:</td><td>&nbsp;</td><td valign="top"><a href="Complex-Arithmetic.html">Complex Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Complex-Data-Types.html#index-complex-conjugation">complex conjugation</a>:</td><td>&nbsp;</td><td valign="top"><a href="Complex-Data-Types.html">Complex Data Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Imaginary-Constants.html#index-complex-constants">complex constants</a>:</td><td>&nbsp;</td><td valign="top"><a href="Imaginary-Constants.html">Imaginary Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="Complex-Data-Types.html#index-complex-numbers">complex numbers</a>:</td><td>&nbsp;</td><td valign="top"><a href="Complex-Data-Types.html">Complex Data Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Blocks.html#index-compound-statement">compound statement</a>:</td><td>&nbsp;</td><td valign="top"><a href="Blocks.html">Blocks</a></td></tr>
+<tr><td></td><td valign="top"><a href="Labels-as-Values.html#index-computed-gotos">computed gotos</a>:</td><td>&nbsp;</td><td valign="top"><a href="Labels-as-Values.html">Labels as Values</a></td></tr>
+<tr><td></td><td valign="top"><a href="Computed-Includes.html#index-computed-includes">computed includes</a>:</td><td>&nbsp;</td><td valign="top"><a href="Computed-Includes.html">Computed Includes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Concatenation.html#index-concatenation">concatenation</a>:</td><td>&nbsp;</td><td valign="top"><a href="Concatenation.html">Concatenation</a></td></tr>
+<tr><td></td><td valign="top"><a href="Conditional-Expression.html#index-conditional-expression">conditional expression</a>:</td><td>&nbsp;</td><td valign="top"><a href="Conditional-Expression.html">Conditional Expression</a></td></tr>
+<tr><td></td><td valign="top"><a href="ifdef.html#index-conditional-group">conditional group</a>:</td><td>&nbsp;</td><td valign="top"><a href="ifdef.html">ifdef</a></td></tr>
+<tr><td></td><td valign="top"><a href="Conditionals.html#index-conditionals">conditionals</a>:</td><td>&nbsp;</td><td valign="top"><a href="Conditionals.html">Conditionals</a></td></tr>
+<tr><td></td><td valign="top"><a href="Logical-Operators.html#index-conjunction-operator">conjunction operator</a>:</td><td>&nbsp;</td><td valign="top"><a href="Logical-Operators.html">Logical Operators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Bitwise-Operations.html#index-conjunction_002c-bitwise">conjunction, bitwise</a>:</td><td>&nbsp;</td><td valign="top"><a href="Bitwise-Operations.html">Bitwise Operations</a></td></tr>
+<tr><td></td><td valign="top"><a href="const-Fields.html#index-const-fields">const fields</a>:</td><td>&nbsp;</td><td valign="top"><a href="const-Fields.html">const Fields</a></td></tr>
+<tr><td></td><td valign="top"><a href="const.html#index-const-variables-and-fields"><code>const</code> variables and fields</a>:</td><td>&nbsp;</td><td valign="top"><a href="const.html">const</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-Const-Type.html#index-constant-data-types_002c-integer">constant data types, integer</a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-Const-Type.html">Integer Const Type</a></td></tr>
+<tr><td></td><td valign="top"><a href="Constants.html#index-constants">constants</a>:</td><td>&nbsp;</td><td valign="top"><a href="Constants.html">Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="Character-Constants.html#index-constants_002c-character">constants, character</a>:</td><td>&nbsp;</td><td valign="top"><a href="Character-Constants.html">Character Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="Floating-Constants.html#index-constants_002c-floating_002dpoint">constants, floating-point</a>:</td><td>&nbsp;</td><td valign="top"><a href="Floating-Constants.html">Floating Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="Imaginary-Constants.html#index-constants_002c-imaginary">constants, imaginary</a>:</td><td>&nbsp;</td><td valign="top"><a href="Imaginary-Constants.html">Imaginary Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-Constants.html#index-constants_002c-integer">constants, integer</a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-Constants.html">Integer Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="String-Constants.html#index-constants_002c-string">constants, string</a>:</td><td>&nbsp;</td><td valign="top"><a href="String-Constants.html">String Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="Wide-Character-Constants.html#index-constants_002c-wide-character">constants, wide character</a>:</td><td>&nbsp;</td><td valign="top"><a href="Wide-Character-Constants.html">Wide Character Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="Wide-String-Constants.html#index-constants_002c-wide-string">constants, wide string</a>:</td><td>&nbsp;</td><td valign="top"><a href="Wide-String-Constants.html">Wide String Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="Constructing-Array-Values.html#index-constructing-array-values">constructing array values</a>:</td><td>&nbsp;</td><td valign="top"><a href="Constructing-Array-Values.html">Constructing Array Values</a></td></tr>
+<tr><td></td><td valign="top"><a href="Structure-Constructors.html#index-constructors_002c-structure">constructors, structure</a>:</td><td>&nbsp;</td><td valign="top"><a href="Structure-Constructors.html">Structure Constructors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Line-Continuation.html#index-continuation-of-lines">continuation of lines</a>:</td><td>&nbsp;</td><td valign="top"><a href="Line-Continuation.html">Line Continuation</a></td></tr>
+<tr><td></td><td valign="top"><a href="continue-Statement.html#index-continue-statement"><code>continue</code> statement</a>:</td><td>&nbsp;</td><td valign="top"><a href="continue-Statement.html">continue Statement</a></td></tr>
+<tr><td></td><td valign="top"><a href="Once_002dOnly-Headers.html#index-controlling-macro">controlling macro</a>:</td><td>&nbsp;</td><td valign="top"><a href="Once_002dOnly-Headers.html">Once-Only Headers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Pointer_002dInteger-Conversion.html#index-conversion-between-pointers-and-integers">conversion between pointers and integers</a>:</td><td>&nbsp;</td><td valign="top"><a href="Pointer_002dInteger-Conversion.html">Pointer-Integer Conversion</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Conversions.html#index-conversions_002c-type">conversions, type</a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Conversions.html">Type Conversions</a></td></tr>
+<tr><td></td><td valign="top"><a href="switch-Example.html#index-counting-vowels-and-punctuation">counting vowels and punctuation</a>:</td><td>&nbsp;</td><td valign="top"><a href="switch-Example.html">switch Example</a></td></tr>
+<tr><td></td><td valign="top"><a href="Stack.html#index-crash">crash</a>:</td><td>&nbsp;</td><td valign="top"><a href="Stack.html">Stack</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-D">D</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Declarations.html#index-declararing-functions">declararing functions</a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Declarations.html">Function Declarations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Variable-Declarations.html#index-declaration-of-variables">declaration of variables</a>:</td><td>&nbsp;</td><td valign="top"><a href="Variable-Declarations.html">Variable Declarations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Statement-Exprs.html#index-declarations-inside-expressions">declarations inside expressions</a>:</td><td>&nbsp;</td><td valign="top"><a href="Statement-Exprs.html">Statement Exprs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Combining-Variable-Declarations.html#index-declarations_002c-combining">declarations, combining</a>:</td><td>&nbsp;</td><td valign="top"><a href="Combining-Variable-Declarations.html">Combining Variable Declarations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Extern-Declarations.html#index-declarations_002c-extern">declarations, <code>extern</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Extern-Declarations.html">Extern Declarations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Declaring-an-Array.html#index-declaring-an-array">declaring an array</a>:</td><td>&nbsp;</td><td valign="top"><a href="Declaring-an-Array.html">Declaring an Array</a></td></tr>
+<tr><td></td><td valign="top"><a href="Declaring-Arrays-and-Pointers.html#index-declaring-arrays-and-pointers">declaring arrays and pointers</a>:</td><td>&nbsp;</td><td valign="top"><a href="Declaring-Arrays-and-Pointers.html">Declaring Arrays and Pointers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Declaring-Function-Pointers.html#index-declaring-function-pointers">declaring function pointers</a>:</td><td>&nbsp;</td><td valign="top"><a href="Declaring-Function-Pointers.html">Declaring Function Pointers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Increment_002fDecrement.html#index-decrement-operator">decrement operator</a>:</td><td>&nbsp;</td><td valign="top"><a href="Increment_002fDecrement.html">Increment/Decrement</a></td></tr>
+<tr><td></td><td valign="top"><a href="Pointer-Increment_002fDecrement.html#index-decrementing-pointers">decrementing pointers</a>:</td><td>&nbsp;</td><td valign="top"><a href="Pointer-Increment_002fDecrement.html">Pointer Increment/Decrement</a></td></tr>
+<tr><td></td><td valign="top"><a href="defined.html#index-defined"><code>defined</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="defined.html">defined</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Definitions.html#index-defining-functions">defining functions</a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Definitions.html">Function Definitions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Pointer-Dereference.html#index-dereferencing-pointers">dereferencing pointers</a>:</td><td>&nbsp;</td><td valign="top"><a href="Pointer-Dereference.html">Pointer Dereference</a></td></tr>
+<tr><td></td><td valign="top"><a href="Designated-Inits.html#index-designated-initializers">designated initializers</a>:</td><td>&nbsp;</td><td valign="top"><a href="Designated-Inits.html">Designated Inits</a></td></tr>
+<tr><td></td><td valign="top"><a href="Diagnostics.html#index-diagnostic">diagnostic</a>:</td><td>&nbsp;</td><td valign="top"><a href="Diagnostics.html">Diagnostics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Digraphs.html#index-digraphs">digraphs</a>:</td><td>&nbsp;</td><td valign="top"><a href="Digraphs.html">Digraphs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Directives.html#index-directive-line">directive line</a>:</td><td>&nbsp;</td><td valign="top"><a href="Directives.html">Directives</a></td></tr>
+<tr><td></td><td valign="top"><a href="Directives.html#index-directive-name">directive name</a>:</td><td>&nbsp;</td><td valign="top"><a href="Directives.html">Directives</a></td></tr>
+<tr><td></td><td valign="top"><a href="Directives.html#index-directives">directives</a>:</td><td>&nbsp;</td><td valign="top"><a href="Directives.html">Directives</a></td></tr>
+<tr><td></td><td valign="top"><a href="Logical-Operators.html#index-disjunction-operator">disjunction operator</a>:</td><td>&nbsp;</td><td valign="top"><a href="Logical-Operators.html">Logical Operators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Bitwise-Operations.html#index-disjunction_002c-bitwise">disjunction, bitwise</a>:</td><td>&nbsp;</td><td valign="top"><a href="Bitwise-Operations.html">Bitwise Operations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Division-and-Remainder.html#index-division-by-zero">division by zero</a>:</td><td>&nbsp;</td><td valign="top"><a href="Division-and-Remainder.html">Division and Remainder</a></td></tr>
+<tr><td></td><td valign="top"><a href="Basic-Arithmetic.html#index-division-operator">division operator</a>:</td><td>&nbsp;</td><td valign="top"><a href="Basic-Arithmetic.html">Basic Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="do_002dwhile-Statement.html#index-do_002d_002dwhile-statement"><code>do</code>&ndash;<code>while</code> statement</a>:</td><td>&nbsp;</td><td valign="top"><a href="do_002dwhile-Statement.html">do-while Statement</a></td></tr>
+<tr><td></td><td valign="top"><a href="Nested-Functions.html#index-downward-funargs">downward funargs</a>:</td><td>&nbsp;</td><td valign="top"><a href="Nested-Functions.html">Nested Functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Pointer-Arithmetic-Drawbacks.html#index-drawbacks-of-pointer-arithmetic">drawbacks of pointer arithmetic</a>:</td><td>&nbsp;</td><td valign="top"><a href="Pointer-Arithmetic-Drawbacks.html">Pointer Arithmetic Drawbacks</a></td></tr>
+<tr><td></td><td valign="top"><a href="Duffs-Device.html#index-Duff_0027s-device">Duff&rsquo;s device</a>:</td><td>&nbsp;</td><td valign="top"><a href="Duffs-Device.html">Duffs Device</a></td></tr>
+<tr><td></td><td valign="top"><a href="Dynamic-Memory-Allocation.html#index-dynamic-memory-allocation">dynamic memory allocation</a>:</td><td>&nbsp;</td><td valign="top"><a href="Dynamic-Memory-Allocation.html">Dynamic Memory Allocation</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-E">E</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Arrays.html#index-elements-of-arrays">elements of arrays</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arrays.html">Arrays</a></td></tr>
+<tr><td></td><td valign="top"><a href="Macro-Arguments.html#index-empty-macro-arguments">empty macro arguments</a>:</td><td>&nbsp;</td><td valign="top"><a href="Macro-Arguments.html">Macro Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Enumeration-Types.html#index-enumeration-types">enumeration types</a>:</td><td>&nbsp;</td><td valign="top"><a href="Enumeration-Types.html">Enumeration Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Enumeration-Types.html#index-enumerator">enumerator</a>:</td><td>&nbsp;</td><td valign="top"><a href="Enumeration-Types.html">Enumeration Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Environment-Variables.html#index-environment-variables">environment variables</a>:</td><td>&nbsp;</td><td valign="top"><a href="Environment-Variables.html">Environment Variables</a></td></tr>
+<tr><td></td><td valign="top"><a href="Numeric-Comparisons.html#index-equal-operator">equal operator</a>:</td><td>&nbsp;</td><td valign="top"><a href="Numeric-Comparisons.html">Numeric Comparisons</a></td></tr>
+<tr><td></td><td valign="top"><a href="Error-Recovery.html#index-error-recovery-_0028floating-point_0029">error recovery (floating point)</a>:</td><td>&nbsp;</td><td valign="top"><a href="Error-Recovery.html">Error Recovery</a></td></tr>
+<tr><td></td><td valign="top"><a href="Character-Constants.html#index-escape-_0028ASCII-character_0029">escape (ASCII character)</a>:</td><td>&nbsp;</td><td valign="top"><a href="Character-Constants.html">Character Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="Character-Constants.html#index-escape-sequence">escape sequence</a>:</td><td>&nbsp;</td><td valign="top"><a href="Character-Constants.html">Character Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="Exact-Floating_002dPoint.html#index-exact-floating_002dpoint-arithmetic">exact floating-point arithmetic</a>:</td><td>&nbsp;</td><td valign="top"><a href="Exact-Floating_002dPoint.html">Exact Floating-Point</a></td></tr>
+<tr><td></td><td valign="top"><a href="Exact-Floating-Constants.html#index-exact-specification-of-floating_002dpoint-constants">exact specification of floating-point constants</a>:</td><td>&nbsp;</td><td valign="top"><a href="Exact-Floating-Constants.html">Exact Floating Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="Complete-Program.html#index-example-program_002c-complete">example program, complete</a>:</td><td>&nbsp;</td><td valign="top"><a href="Complete-Program.html">Complete Program</a></td></tr>
+<tr><td></td><td valign="top"><a href="Exception-Flags.html#index-exception-flags-_0028floating-point_0029">exception flags (floating point)</a>:</td><td>&nbsp;</td><td valign="top"><a href="Exception-Flags.html">Exception Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Compile-Example.html#index-executable-file">executable file</a>:</td><td>&nbsp;</td><td valign="top"><a href="Compile-Example.html">Compile Example</a></td></tr>
+<tr><td></td><td valign="top"><a href="Execution-Control-Expressions.html#index-execution-control-expressions">execution control expressions</a>:</td><td>&nbsp;</td><td valign="top"><a href="Execution-Control-Expressions.html">Execution Control Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Values-from-main.html#index-exit-status">exit status</a>:</td><td>&nbsp;</td><td valign="top"><a href="Values-from-main.html">Values from main</a></td></tr>
+<tr><td></td><td valign="top"><a href="Values-from-main.html#index-EXIT_005fFAILURE"><code>EXIT_FAILURE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Values-from-main.html">Values from main</a></td></tr>
+<tr><td></td><td valign="top"><a href="Values-from-main.html#index-EXIT_005fSUCCESS"><code>EXIT_SUCCESS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Values-from-main.html">Values from main</a></td></tr>
+<tr><td></td><td valign="top"><a href="Argument-Prescan.html#index-expansion-of-arguments">expansion of arguments</a>:</td><td>&nbsp;</td><td valign="top"><a href="Argument-Prescan.html">Argument Prescan</a></td></tr>
+<tr><td></td><td valign="top"><a href="Explicit-Type-Conversion.html#index-explicit-type-conversion">explicit type conversion</a>:</td><td>&nbsp;</td><td valign="top"><a href="Explicit-Type-Conversion.html">Explicit Type Conversion</a></td></tr>
+<tr><td></td><td valign="top"><a href="Expression-Statement.html#index-expression-statement">expression statement</a>:</td><td>&nbsp;</td><td valign="top"><a href="Expression-Statement.html">Expression Statement</a></td></tr>
+<tr><td></td><td valign="top"><a href="Conditional-Expression.html#index-expression_002c-conditional">expression, conditional</a>:</td><td>&nbsp;</td><td valign="top"><a href="Conditional-Expression.html">Conditional Expression</a></td></tr>
+<tr><td></td><td valign="top"><a href="Statement-Exprs.html#index-expressions-containing-statements">expressions containing statements</a>:</td><td>&nbsp;</td><td valign="top"><a href="Statement-Exprs.html">Statement Exprs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Execution-Control-Expressions.html#index-expressions_002c-execution-control">expressions, execution control</a>:</td><td>&nbsp;</td><td valign="top"><a href="Execution-Control-Expressions.html">Execution Control Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Extern-Declarations.html#index-extern-declarations"><code>extern</code> declarations</a>:</td><td>&nbsp;</td><td valign="top"><a href="Extern-Declarations.html">Extern Declarations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Inline-Function-Definitions.html#index-extern-inline-function">extern inline function</a>:</td><td>&nbsp;</td><td valign="top"><a href="Inline-Function-Definitions.html">Inline Function Definitions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-F">F</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Values-from-main.html#index-failure">failure</a>:</td><td>&nbsp;</td><td valign="top"><a href="Values-from-main.html">Values from main</a></td></tr>
+<tr><td></td><td valign="top"><a href="Iterative-Fibonacci.html#index-Fibonacci-function_002c-iterative">Fibonacci function, iterative</a>:</td><td>&nbsp;</td><td valign="top"><a href="Iterative-Fibonacci.html">Iterative Fibonacci</a></td></tr>
+<tr><td></td><td valign="top"><a href="Recursive-Fibonacci.html#index-Fibonacci-function_002c-recursive">Fibonacci function, recursive</a>:</td><td>&nbsp;</td><td valign="top"><a href="Recursive-Fibonacci.html">Recursive Fibonacci</a></td></tr>
+<tr><td></td><td valign="top"><a href="Field-Offset.html#index-field-offset">field offset</a>:</td><td>&nbsp;</td><td valign="top"><a href="Field-Offset.html">Field Offset</a></td></tr>
+<tr><td></td><td valign="top"><a href="Structures.html#index-fields-in-structures">fields in structures</a>:</td><td>&nbsp;</td><td valign="top"><a href="Structures.html">Structures</a></td></tr>
+<tr><td></td><td valign="top"><a href="File_002dScope-Variables.html#index-file_002dscope-variables">file-scope variables</a>:</td><td>&nbsp;</td><td valign="top"><a href="File_002dScope-Variables.html">File-Scope Variables</a></td></tr>
+<tr><td></td><td valign="top"><a href="Allocating-File_002dScope.html#index-file_002dscope-variables_002c-allocating">file-scope variables, allocating</a>:</td><td>&nbsp;</td><td valign="top"><a href="Allocating-File_002dScope.html">Allocating File-Scope</a></td></tr>
+<tr><td></td><td valign="top"><a href="Limitations-of-C-Arrays.html#index-first_002dclass-object">first-class object</a>:</td><td>&nbsp;</td><td valign="top"><a href="Limitations-of-C-Arrays.html">Limitations of C Arrays</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flexible-Array-Fields.html#index-flexible-array-fields">flexible array fields</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flexible-Array-Fields.html">Flexible Array Fields</a></td></tr>
+<tr><td></td><td valign="top"><a href="Exception-Flags.html#index-floating-arithmetic-exception-flags">floating arithmetic exception flags</a>:</td><td>&nbsp;</td><td valign="top"><a href="Exception-Flags.html">Exception Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Exception-Flags.html#index-floating-overflow">floating overflow</a>:</td><td>&nbsp;</td><td valign="top"><a href="Exception-Flags.html">Exception Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Float-Example.html#index-floating-point-example">floating point example</a>:</td><td>&nbsp;</td><td valign="top"><a href="Float-Example.html">Float Example</a></td></tr>
+<tr><td></td><td valign="top"><a href="Special-Float-Values.html#index-floating-underflow">floating underflow</a>:</td><td>&nbsp;</td><td valign="top"><a href="Special-Float-Values.html">Special Float Values</a></td></tr>
+<tr><td></td><td valign="top"><a href="Exception-Flags.html#index-floating-underflow-1">floating underflow</a>:</td><td>&nbsp;</td><td valign="top"><a href="Exception-Flags.html">Exception Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Invalid-Optimizations.html#index-floating_002dpoint-arithmetic-invalid-optimizations">floating-point arithmetic invalid optimizations</a>:</td><td>&nbsp;</td><td valign="top"><a href="Invalid-Optimizations.html">Invalid Optimizations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Complex-Arithmetic.html#index-floating_002dpoint-arithmetic-with-complex-numbers">floating-point arithmetic with complex numbers</a>:</td><td>&nbsp;</td><td valign="top"><a href="Complex-Arithmetic.html">Complex Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Exact-Floating_002dPoint.html#index-floating_002dpoint-arithmetic_002c-exact">floating-point arithmetic, exact</a>:</td><td>&nbsp;</td><td valign="top"><a href="Exact-Floating_002dPoint.html">Exact Floating-Point</a></td></tr>
+<tr><td></td><td valign="top"><a href="Floating-Constants.html#index-floating_002dpoint-constants">floating-point constants</a>:</td><td>&nbsp;</td><td valign="top"><a href="Floating-Constants.html">Floating Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="Exact-Floating-Constants.html#index-floating_002dpoint-constants_002c-exact-specification-of">floating-point constants, exact specification of</a>:</td><td>&nbsp;</td><td valign="top"><a href="Exact-Floating-Constants.html">Exact Floating Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="Error-Recovery.html#index-floating_002dpoint-error-recovery">floating-point error recovery</a>:</td><td>&nbsp;</td><td valign="top"><a href="Error-Recovery.html">Error Recovery</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fused-Multiply_002dAdd.html#index-floating_002dpoint-fused-multiply_002dadd">floating-point fused multiply-add</a>:</td><td>&nbsp;</td><td valign="top"><a href="Fused-Multiply_002dAdd.html">Fused Multiply-Add</a></td></tr>
+<tr><td></td><td valign="top"><a href="Handling-Infinity.html#index-floating_002dpoint-infinity">floating-point infinity</a>:</td><td>&nbsp;</td><td valign="top"><a href="Handling-Infinity.html">Handling Infinity</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Epsilon.html#index-floating_002dpoint-machine-epsilon">floating-point machine epsilon</a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Epsilon.html">Machine Epsilon</a></td></tr>
+<tr><td></td><td valign="top"><a href="Handling-NaN.html#index-floating_002dpoint-NaN">floating-point NaN</a>:</td><td>&nbsp;</td><td valign="top"><a href="Handling-NaN.html">Handling NaN</a></td></tr>
+<tr><td></td><td valign="top"><a href="Floating-Representations.html#index-floating_002dpoint-representations">floating-point representations</a>:</td><td>&nbsp;</td><td valign="top"><a href="Floating-Representations.html">Floating Representations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Round_002dTrip-Base-Conversion.html#index-floating_002dpoint-round_002dtrip-base-conversion">floating-point round-trip base conversion</a>:</td><td>&nbsp;</td><td valign="top"><a href="Round_002dTrip-Base-Conversion.html">Round-Trip Base Conversion</a></td></tr>
+<tr><td></td><td valign="top"><a href="Rounding-Control.html#index-floating_002dpoint-rounding-control">floating-point rounding control</a>:</td><td>&nbsp;</td><td valign="top"><a href="Rounding-Control.html">Rounding Control</a></td></tr>
+<tr><td></td><td valign="top"><a href="Rounding-Issues.html#index-floating_002dpoint-rounding-issues">floating-point rounding issues</a>:</td><td>&nbsp;</td><td valign="top"><a href="Rounding-Issues.html">Rounding Issues</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scaling-by-the-Base.html#index-floating_002dpoint-scaling-by-powers-of-the-base">floating-point scaling by powers of the base</a>:</td><td>&nbsp;</td><td valign="top"><a href="Scaling-by-the-Base.html">Scaling by the Base</a></td></tr>
+<tr><td></td><td valign="top"><a href="Signed-Zeros.html#index-floating_002dpoint-signed-zeros">floating-point signed zeros</a>:</td><td>&nbsp;</td><td valign="top"><a href="Signed-Zeros.html">Signed Zeros</a></td></tr>
+<tr><td></td><td valign="top"><a href="Significance-Loss.html#index-floating_002dpoint-significance-loss">floating-point significance loss</a>:</td><td>&nbsp;</td><td valign="top"><a href="Significance-Loss.html">Significance Loss</a></td></tr>
+<tr><td></td><td valign="top"><a href="Floating_002dPoint-Data-Types.html#index-floating_002dpoint-types">floating-point types</a>:</td><td>&nbsp;</td><td valign="top"><a href="Floating_002dPoint-Data-Types.html">Floating-Point Data Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Special-Float-Values.html#index-floating_002dpoint-values_002c-special">floating-point values, special</a>:</td><td>&nbsp;</td><td valign="top"><a href="Special-Float-Values.html">Special Float Values</a></td></tr>
+<tr><td></td><td valign="top"><a href="for-Statement.html#index-for-statement"><code>for</code> statement</a>:</td><td>&nbsp;</td><td valign="top"><a href="for-Statement.html">for Statement</a></td></tr>
+<tr><td></td><td valign="top"><a href="Character-Constants.html#index-formfeed">formfeed</a>:</td><td>&nbsp;</td><td valign="top"><a href="Character-Constants.html">Character Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="Whitespace.html#index-formfeed-in-source">formfeed in source</a>:</td><td>&nbsp;</td><td valign="top"><a href="Whitespace.html">Whitespace</a></td></tr>
+<tr><td></td><td valign="top"><a href="Static-Functions.html#index-forward-declaration">forward declaration</a>:</td><td>&nbsp;</td><td valign="top"><a href="Static-Functions.html">Static Functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Forward-Function-Declarations.html#index-forward-function-declarations">forward function declarations</a>:</td><td>&nbsp;</td><td valign="top"><a href="Forward-Function-Declarations.html">Forward Function Declarations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sequence-Points.html#index-full-expression">full expression</a>:</td><td>&nbsp;</td><td valign="top"><a href="Sequence-Points.html">Sequence Points</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Body.html#index-function-body">function body</a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Body.html">Function Body</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Call-Semantics.html#index-function-call-semantics">function call semantics</a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Call-Semantics.html">Function Call Semantics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Calls.html#index-function-calls">function calls</a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Calls.html">Function Calls</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Declarations.html#index-function-declarations">function declarations</a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Declarations.html">Function Declarations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Forward-Function-Declarations.html#index-function-declarations_002c-forward">function declarations, forward</a>:</td><td>&nbsp;</td><td valign="top"><a href="Forward-Function-Declarations.html">Forward Function Declarations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Definitions.html#index-function-definitions">function definitions</a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Definitions.html">Function Definitions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Inline-Function-Definitions.html#index-function-definitions_002c-inline">function definitions, inline</a>:</td><td>&nbsp;</td><td valign="top"><a href="Inline-Function-Definitions.html">Inline Function Definitions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Old_002dStyle-Function-Definitions.html#index-function-definitions_002c-old_002dstyle">function definitions, old-style</a>:</td><td>&nbsp;</td><td valign="top"><a href="Old_002dStyle-Function-Definitions.html">Old-Style Function Definitions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Header.html#index-function-header">function header</a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Header.html">Function Header</a></td></tr>
+<tr><td></td><td valign="top"><a href="Variable-Number-of-Arguments.html#index-function-parameter-lists_002c-variable-length">function parameter lists, variable length</a>:</td><td>&nbsp;</td><td valign="top"><a href="Variable-Number-of-Arguments.html">Variable Number of Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Parameter-Variables.html#index-function-parameter-variables">function parameter variables</a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Parameter-Variables.html">Function Parameter Variables</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Pointers.html#index-function-pointers">function pointers</a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Pointers.html">Function Pointers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Assigning-Function-Pointers.html#index-function-pointers_002c-assigning">function pointers, assigning</a>:</td><td>&nbsp;</td><td valign="top"><a href="Assigning-Function-Pointers.html">Assigning Function Pointers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Calling-Function-Pointers.html#index-function-pointers_002c-calling">function pointers, calling</a>:</td><td>&nbsp;</td><td valign="top"><a href="Calling-Function-Pointers.html">Calling Function Pointers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Declaring-Function-Pointers.html#index-function-pointers_002c-declaring">function pointers, declaring</a>:</td><td>&nbsp;</td><td valign="top"><a href="Declaring-Function-Pointers.html">Declaring Function Pointers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Declarations.html#index-function-prototype">function prototype</a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Declarations.html">Function Declarations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scope.html#index-function-prototype-scope">function prototype scope</a>:</td><td>&nbsp;</td><td valign="top"><a href="Scope.html">Scope</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scope.html#index-function-scope">function scope</a>:</td><td>&nbsp;</td><td valign="top"><a href="Scope.html">Scope</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function_002dlike-Macros.html#index-function_002dlike-macros">function-like macros</a>:</td><td>&nbsp;</td><td valign="top"><a href="Function_002dlike-Macros.html">Function-like Macros</a></td></tr>
+<tr><td></td><td valign="top"><a href="Functions.html#index-functions">functions</a>:</td><td>&nbsp;</td><td valign="top"><a href="Functions.html">Functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Variable_002dLength-Array-Parameters.html#index-functions-that-accept-variable_002dlength-arrays">functions that accept variable-length arrays</a>:</td><td>&nbsp;</td><td valign="top"><a href="Variable_002dLength-Array-Parameters.html">Variable-Length Array Parameters</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arrays-as-Parameters.html#index-functions-with-array-parameters">functions with array parameters</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arrays-as-Parameters.html">Arrays as Parameters</a></td></tr>
+<tr><td></td><td valign="top"><a href="Nested-Functions.html#index-functions_002c-nested">functions, nested</a>:</td><td>&nbsp;</td><td valign="top"><a href="Nested-Functions.html">Nested Functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Static-Functions.html#index-functions_002c-static">functions, static</a>:</td><td>&nbsp;</td><td valign="top"><a href="Static-Functions.html">Static Functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fused-Multiply_002dAdd.html#index-fused-multiply_002dadd-in-floating_002dpoint-computations">fused multiply-add in floating-point computations</a>:</td><td>&nbsp;</td><td valign="top"><a href="Fused-Multiply_002dAdd.html">Fused Multiply-Add</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-G">G</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="File_002dScope-Variables.html#index-global-variables">global variables</a>:</td><td>&nbsp;</td><td valign="top"><a href="File_002dScope-Variables.html">File-Scope Variables</a></td></tr>
+<tr><td></td><td valign="top"><a href="goto-Statement.html#index-goto-statement"><code>goto</code> statement</a>:</td><td>&nbsp;</td><td valign="top"><a href="goto-Statement.html">goto Statement</a></td></tr>
+<tr><td></td><td valign="top"><a href="Labels-as-Values.html#index-goto-with-computed-label">goto with computed label</a>:</td><td>&nbsp;</td><td valign="top"><a href="Labels-as-Values.html">Labels as Values</a></td></tr>
+<tr><td></td><td valign="top"><a href="Binary-Operator-Grammar.html#index-grammar_002c-binary-operator">grammar, binary operator</a>:</td><td>&nbsp;</td><td valign="top"><a href="Binary-Operator-Grammar.html">Binary Operator Grammar</a></td></tr>
+<tr><td></td><td valign="top"><a href="Numeric-Comparisons.html#index-greater_002dor_002dequal-operator">greater-or-equal operator</a>:</td><td>&nbsp;</td><td valign="top"><a href="Numeric-Comparisons.html">Numeric Comparisons</a></td></tr>
+<tr><td></td><td valign="top"><a href="Numeric-Comparisons.html#index-greater_002dthan-operator">greater-than operator</a>:</td><td>&nbsp;</td><td valign="top"><a href="Numeric-Comparisons.html">Numeric Comparisons</a></td></tr>
+<tr><td></td><td valign="top"><a href="Once_002dOnly-Headers.html#index-guard-macro">guard macro</a>:</td><td>&nbsp;</td><td valign="top"><a href="Once_002dOnly-Headers.html">Once-Only Headers</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-H">H</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Signals.html#index-handler-_0028for-signal_0029">handler (for signal)</a>:</td><td>&nbsp;</td><td valign="top"><a href="Signals.html">Signals</a></td></tr>
+<tr><td></td><td valign="top"><a href="Header-Files.html#index-header-file">header file</a>:</td><td>&nbsp;</td><td valign="top"><a href="Header-Files.html">Header Files</a></td></tr>
+<tr><td></td><td valign="top"><a href="Exact-Floating-Constants.html#index-hexademical-floating_002dpoint-constants">hexademical floating-point constants</a>:</td><td>&nbsp;</td><td valign="top"><a href="Exact-Floating-Constants.html">Exact Floating Constants</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-I">I</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Identifiers.html#index-identifiers">identifiers</a>:</td><td>&nbsp;</td><td valign="top"><a href="Identifiers.html">Identifiers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Preprocessing-Tokens.html#index-identifiers-1">identifiers</a>:</td><td>&nbsp;</td><td valign="top"><a href="Preprocessing-Tokens.html">Preprocessing Tokens</a></td></tr>
+<tr><td></td><td valign="top"><a href="Floating-Representations.html#index-IEEE-754_002d2008-Standard">IEEE 754-2008 Standard</a>:</td><td>&nbsp;</td><td valign="top"><a href="Floating-Representations.html">Floating Representations</a></td></tr>
+<tr><td></td><td valign="top"><a href="if-Statement.html#index-if-statement"><code>if</code> statement</a>:</td><td>&nbsp;</td><td valign="top"><a href="if-Statement.html">if Statement</a></td></tr>
+<tr><td></td><td valign="top"><a href="if_002delse-Statement.html#index-if_2026else-statement"><code>if</code>&hellip;<code>else</code> statement</a>:</td><td>&nbsp;</td><td valign="top"><a href="if_002delse-Statement.html">if-else Statement</a></td></tr>
+<tr><td></td><td valign="top"><a href="Imaginary-Constants.html#index-imaginary-constants">imaginary constants</a>:</td><td>&nbsp;</td><td valign="top"><a href="Imaginary-Constants.html">Imaginary Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="Once_002dOnly-Headers.html#index-including-just-once">including just once</a>:</td><td>&nbsp;</td><td valign="top"><a href="Once_002dOnly-Headers.html">Once-Only Headers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Incomplete-Array-Types.html#index-incomplete-array-types">incomplete array types</a>:</td><td>&nbsp;</td><td valign="top"><a href="Incomplete-Array-Types.html">Incomplete Array Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Incomplete-Types.html#index-incomplete-types">incomplete types</a>:</td><td>&nbsp;</td><td valign="top"><a href="Incomplete-Types.html">Incomplete Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Increment_002fDecrement.html#index-increment-operator">increment operator</a>:</td><td>&nbsp;</td><td valign="top"><a href="Increment_002fDecrement.html">Increment/Decrement</a></td></tr>
+<tr><td></td><td valign="top"><a href="Pointer-Increment_002fDecrement.html#index-incrementing-pointers">incrementing pointers</a>:</td><td>&nbsp;</td><td valign="top"><a href="Pointer-Increment_002fDecrement.html">Pointer Increment/Decrement</a></td></tr>
+<tr><td></td><td valign="top"><a href="Handling-Infinity.html#index-infinity-in-floating_002dpoint-arithmetic">infinity in floating-point arithmetic</a>:</td><td>&nbsp;</td><td valign="top"><a href="Handling-Infinity.html">Handling Infinity</a></td></tr>
+<tr><td></td><td valign="top"><a href="Initializers.html#index-initializers">initializers</a>:</td><td>&nbsp;</td><td valign="top"><a href="Initializers.html">Initializers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Designated-Inits.html#index-initializers-with-labeled-elements">initializers with labeled elements</a>:</td><td>&nbsp;</td><td valign="top"><a href="Designated-Inits.html">Designated Inits</a></td></tr>
+<tr><td></td><td valign="top"><a href="Inline-Function-Definitions.html#index-inline-function-definitions">inline function definitions</a>:</td><td>&nbsp;</td><td valign="top"><a href="Inline-Function-Definitions.html">Inline Function Definitions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Inline-Function-Definitions.html#index-inline-functions_002c-omission-of">inline functions, omission of</a>:</td><td>&nbsp;</td><td valign="top"><a href="Inline-Function-Definitions.html">Inline Function Definitions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-Arithmetic.html#index-integer-arithmetic">integer arithmetic</a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-Arithmetic.html">Integer Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-Const-Type.html#index-integer-constant-data-types">integer constant data types</a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-Const-Type.html">Integer Const Type</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-Constants.html#index-integer-constants">integer constants</a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-Constants.html">Integer Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-Overflow.html#index-integer-overflow">integer overflow</a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-Overflow.html">Integer Overflow</a></td></tr>
+<tr><td></td><td valign="top"><a href="Signed-Overflow.html#index-integer-overflow_002c-compiler-options">integer overflow, compiler options</a>:</td><td>&nbsp;</td><td valign="top"><a href="Signed-Overflow.html">Signed Overflow</a></td></tr>
+<tr><td></td><td valign="top"><a href="Maximum-and-Minimum-Values.html#index-integer-ranges">integer ranges</a>:</td><td>&nbsp;</td><td valign="top"><a href="Maximum-and-Minimum-Values.html">Maximum and Minimum Values</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-Representations.html#index-integer-representations">integer representations</a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-Representations.html">Integer Representations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-Types.html#index-integer-types">integer types</a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-Types.html">Integer Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Blocks.html#index-internal-block">internal block</a>:</td><td>&nbsp;</td><td valign="top"><a href="Blocks.html">Blocks</a></td></tr>
+<tr><td></td><td valign="top"><a href="Pointer-Arithmetic-Low-Level.html#index-intptr_005ft"><code>intptr_t</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Pointer-Arithmetic-Low-Level.html">Pointer Arithmetic Low Level</a></td></tr>
+<tr><td></td><td valign="top"><a href="Invalid-Optimizations.html#index-invalid-optimizations-in-floating_002dpoint-arithmetic">invalid optimizations in floating-point arithmetic</a>:</td><td>&nbsp;</td><td valign="top"><a href="Invalid-Optimizations.html">Invalid Optimizations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Loop-Statements.html#index-iteration">iteration</a>:</td><td>&nbsp;</td><td valign="top"><a href="Loop-Statements.html">Loop Statements</a></td></tr>
+<tr><td></td><td valign="top"><a href="Iterative-Fibonacci.html#index-iterative-Fibonacci-function">iterative Fibonacci function</a>:</td><td>&nbsp;</td><td valign="top"><a href="Iterative-Fibonacci.html">Iterative Fibonacci</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-K">K</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Old_002dStyle-Function-Definitions.html#index-K_0026R_002dstyle-function-definitions">K&amp;R-style function definitions</a>:</td><td>&nbsp;</td><td valign="top"><a href="Old_002dStyle-Function-Definitions.html">Old-Style Function Definitions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Identifiers.html#index-keyword">keyword</a>:</td><td>&nbsp;</td><td valign="top"><a href="Identifiers.html">Identifiers</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-L">L</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="goto-Statement.html#index-label">label</a>:</td><td>&nbsp;</td><td valign="top"><a href="goto-Statement.html">goto Statement</a></td></tr>
+<tr><td></td><td valign="top"><a href="Designated-Inits.html#index-labeled-elements-in-initializers">labeled elements in initializers</a>:</td><td>&nbsp;</td><td valign="top"><a href="Designated-Inits.html">Designated Inits</a></td></tr>
+<tr><td></td><td valign="top"><a href="Labels-as-Values.html#index-labels-as-values">labels as values</a>:</td><td>&nbsp;</td><td valign="top"><a href="Labels-as-Values.html">Labels as Values</a></td></tr>
+<tr><td></td><td valign="top"><a href="Structure-Layout.html#index-layout-of-structures">layout of structures</a>:</td><td>&nbsp;</td><td valign="top"><a href="Structure-Layout.html">Structure Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Binary-Operator-Grammar.html#index-left_002dassociative">left-associative</a>:</td><td>&nbsp;</td><td valign="top"><a href="Binary-Operator-Grammar.html">Binary Operator Grammar</a></td></tr>
+<tr><td></td><td valign="top"><a href="Zero-Length.html#index-length_002dzero-arrays">length-zero arrays</a>:</td><td>&nbsp;</td><td valign="top"><a href="Zero-Length.html">Zero Length</a></td></tr>
+<tr><td></td><td valign="top"><a href="Numeric-Comparisons.html#index-less_002dor_002dequal-operator">less-or-equal operator</a>:</td><td>&nbsp;</td><td valign="top"><a href="Numeric-Comparisons.html">Numeric Comparisons</a></td></tr>
+<tr><td></td><td valign="top"><a href="Numeric-Comparisons.html#index-less_002dthan-operator">less-than operator</a>:</td><td>&nbsp;</td><td valign="top"><a href="Numeric-Comparisons.html">Numeric Comparisons</a></td></tr>
+<tr><td></td><td valign="top"><a href="Lexical-Syntax.html#index-lexical-syntax">lexical syntax</a>:</td><td>&nbsp;</td><td valign="top"><a href="Lexical-Syntax.html">Lexical Syntax</a></td></tr>
+<tr><td></td><td valign="top"><a href="Limitations-of-C-Arrays.html#index-limitations-of-C-arrays">limitations of C arrays</a>:</td><td>&nbsp;</td><td valign="top"><a href="Limitations-of-C-Arrays.html">Limitations of C Arrays</a></td></tr>
+<tr><td></td><td valign="top"><a href="Line-Continuation.html#index-line-continuation">line continuation</a>:</td><td>&nbsp;</td><td valign="top"><a href="Line-Continuation.html">Line Continuation</a></td></tr>
+<tr><td></td><td valign="top"><a href="Line-Control.html#index-line-control">line control</a>:</td><td>&nbsp;</td><td valign="top"><a href="Line-Control.html">Line Control</a></td></tr>
+<tr><td></td><td valign="top"><a href="Whitespace.html#index-linefeed-in-source">linefeed in source</a>:</td><td>&nbsp;</td><td valign="top"><a href="Whitespace.html">Whitespace</a></td></tr>
+<tr><td></td><td valign="top"><a href="Compilation.html#index-linking-object-files">linking object files</a>:</td><td>&nbsp;</td><td valign="top"><a href="Compilation.html">Compilation</a></td></tr>
+<tr><td></td><td valign="top"><a href="Local-Labels.html#index-local-labels">local labels</a>:</td><td>&nbsp;</td><td valign="top"><a href="Local-Labels.html">Local Labels</a></td></tr>
+<tr><td></td><td valign="top"><a href="Local-Variables.html#index-local-variables">local variables</a>:</td><td>&nbsp;</td><td valign="top"><a href="Local-Variables.html">Local Variables</a></td></tr>
+<tr><td></td><td valign="top"><a href="Macros-and-Auto-Type.html#index-local-variables-in-macros">local variables in macros</a>:</td><td>&nbsp;</td><td valign="top"><a href="Macros-and-Auto-Type.html">Macros and Auto Type</a></td></tr>
+<tr><td></td><td valign="top"><a href="Logical-Operators.html#index-logical-operators">logical operators</a>:</td><td>&nbsp;</td><td valign="top"><a href="Logical-Operators.html">Logical Operators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Loop-Statements.html#index-loop-statements">loop statements</a>:</td><td>&nbsp;</td><td valign="top"><a href="Loop-Statements.html">Loop Statements</a></td></tr>
+<tr><td></td><td valign="top"><a href="Pointer-Arithmetic-Low-Level.html#index-low-level-pointer-arithmetic">low level pointer arithmetic</a>:</td><td>&nbsp;</td><td valign="top"><a href="Pointer-Arithmetic-Low-Level.html">Pointer Arithmetic Low Level</a></td></tr>
+<tr><td></td><td valign="top"><a href="Lvalues.html#index-lvalues">lvalues</a>:</td><td>&nbsp;</td><td valign="top"><a href="Lvalues.html">Lvalues</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-M">M</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Epsilon.html#index-machine-epsilon-_0028floating-point_0029">machine epsilon (floating point)</a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Epsilon.html">Machine Epsilon</a></td></tr>
+<tr><td></td><td valign="top"><a href="Argument-Prescan.html#index-macro-argument-expansion">macro argument expansion</a>:</td><td>&nbsp;</td><td valign="top"><a href="Argument-Prescan.html">Argument Prescan</a></td></tr>
+<tr><td></td><td valign="top"><a href="Directives-Within-Macro-Arguments.html#index-macro-arguments-and-directives">macro arguments and directives</a>:</td><td>&nbsp;</td><td valign="top"><a href="Directives-Within-Macro-Arguments.html">Directives Within Macro Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Macros.html#index-macros">macros</a>:</td><td>&nbsp;</td><td valign="top"><a href="Macros.html">Macros</a></td></tr>
+<tr><td></td><td valign="top"><a href="Computed-Includes.html#index-macros-in-include">macros in include</a>:</td><td>&nbsp;</td><td valign="top"><a href="Computed-Includes.html">Computed Includes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Macro-Arguments.html#index-macros-with-arguments">macros with arguments</a>:</td><td>&nbsp;</td><td valign="top"><a href="Macro-Arguments.html">Macro Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Variadic-Macros.html#index-macros-with-variable-arguments">macros with variable arguments</a>:</td><td>&nbsp;</td><td valign="top"><a href="Variadic-Macros.html">Variadic Macros</a></td></tr>
+<tr><td></td><td valign="top"><a href="Local-Labels.html#index-macros_002c-local-labels">macros, local labels</a>:</td><td>&nbsp;</td><td valign="top"><a href="Local-Labels.html">Local Labels</a></td></tr>
+<tr><td></td><td valign="top"><a href="Macros-and-Auto-Type.html#index-macros_002c-local-variables-in">macros, local variables in</a>:</td><td>&nbsp;</td><td valign="top"><a href="Macros-and-Auto-Type.html">Macros and Auto Type</a></td></tr>
+<tr><td></td><td valign="top"><a href="Auto-Type.html#index-macros_002c-types-of-arguments">macros, types of arguments</a>:</td><td>&nbsp;</td><td valign="top"><a href="Auto-Type.html">Auto Type</a></td></tr>
+<tr><td></td><td valign="top"><a href="The-main-Function.html#index-main-function"><code>main</code> function</a>:</td><td>&nbsp;</td><td valign="top"><a href="The-main-Function.html">The main Function</a></td></tr>
+<tr><td></td><td valign="top"><a href="Compilation.html#index-make-rules">make rules</a>:</td><td>&nbsp;</td><td valign="top"><a href="Compilation.html">Compilation</a></td></tr>
+<tr><td></td><td valign="top"><a href="Object_002dlike-Macros.html#index-manifest-constants">manifest constants</a>:</td><td>&nbsp;</td><td valign="top"><a href="Object_002dlike-Macros.html">Object-like Macros</a></td></tr>
+<tr><td></td><td valign="top"><a href="Maximum-and-Minimum-Values.html#index-maximum-integer-values">maximum integer values</a>:</td><td>&nbsp;</td><td valign="top"><a href="Maximum-and-Minimum-Values.html">Maximum and Minimum Values</a></td></tr>
+<tr><td></td><td valign="top"><a href="Dynamic-Memory-Allocation.html#index-memory-allocation_002c-dynamic">memory allocation, dynamic</a>:</td><td>&nbsp;</td><td valign="top"><a href="Dynamic-Memory-Allocation.html">Dynamic Memory Allocation</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage.html#index-memory-organization">memory organization</a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage.html">Storage</a></td></tr>
+<tr><td></td><td valign="top"><a href="Maximum-and-Minimum-Values.html#index-minimum-integer-values">minimum integer values</a>:</td><td>&nbsp;</td><td valign="top"><a href="Maximum-and-Minimum-Values.html">Maximum and Minimum Values</a></td></tr>
+<tr><td></td><td valign="top"><a href="Modifying-Assignment.html#index-modifying-assignment">modifying assignment</a>:</td><td>&nbsp;</td><td valign="top"><a href="Modifying-Assignment.html">Modifying Assignment</a></td></tr>
+<tr><td></td><td valign="top"><a href="Division-and-Remainder.html#index-modulus">modulus</a>:</td><td>&nbsp;</td><td valign="top"><a href="Division-and-Remainder.html">Division and Remainder</a></td></tr>
+<tr><td></td><td valign="top"><a href="Multidimensional-Arrays.html#index-multidimensional-arrays">multidimensional arrays</a>:</td><td>&nbsp;</td><td valign="top"><a href="Multidimensional-Arrays.html">Multidimensional Arrays</a></td></tr>
+<tr><td></td><td valign="top"><a href="Basic-Arithmetic.html#index-multiplication-operator">multiplication operator</a>:</td><td>&nbsp;</td><td valign="top"><a href="Basic-Arithmetic.html">Basic Arithmetic</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-N">N</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Handling-NaN.html#index-NaN-in-floating_002dpoint-arithmetic">NaN in floating-point arithmetic</a>:</td><td>&nbsp;</td><td valign="top"><a href="Handling-NaN.html">Handling NaN</a></td></tr>
+<tr><td></td><td valign="top"><a href="Handling-NaN.html#index-NaNs_002dalways_002dpropagate-rule">NaNs-always-propagate rule</a>:</td><td>&nbsp;</td><td valign="top"><a href="Handling-NaN.html">Handling NaN</a></td></tr>
+<tr><td></td><td valign="top"><a href="Basic-Arithmetic.html#index-negation-operator">negation operator</a>:</td><td>&nbsp;</td><td valign="top"><a href="Basic-Arithmetic.html">Basic Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Logical-Operators.html#index-negation-operator_002c-logical">negation operator, logical</a>:</td><td>&nbsp;</td><td valign="top"><a href="Logical-Operators.html">Logical Operators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Bitwise-Operations.html#index-negation_002c-bitwise">negation, bitwise</a>:</td><td>&nbsp;</td><td valign="top"><a href="Bitwise-Operations.html">Bitwise Operations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Blocks.html#index-nested-block">nested block</a>:</td><td>&nbsp;</td><td valign="top"><a href="Blocks.html">Blocks</a></td></tr>
+<tr><td></td><td valign="top"><a href="Nested-Functions.html#index-nested-functions">nested functions</a>:</td><td>&nbsp;</td><td valign="top"><a href="Nested-Functions.html">Nested Functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Character-Constants.html#index-newline">newline</a>:</td><td>&nbsp;</td><td valign="top"><a href="Character-Constants.html">Character Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="Whitespace.html#index-newline-in-source">newline in source</a>:</td><td>&nbsp;</td><td valign="top"><a href="Whitespace.html">Whitespace</a></td></tr>
+<tr><td></td><td valign="top"><a href="Handling-NaN.html#index-not-a-number">not a number</a>:</td><td>&nbsp;</td><td valign="top"><a href="Handling-NaN.html">Handling NaN</a></td></tr>
+<tr><td></td><td valign="top"><a href="Numeric-Comparisons.html#index-not_002dequal-operator">not-equal operator</a>:</td><td>&nbsp;</td><td valign="top"><a href="Numeric-Comparisons.html">Numeric Comparisons</a></td></tr>
+<tr><td></td><td valign="top"><a href="Null-Directive.html#index-null-directive">null directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="Null-Directive.html">Null Directive</a></td></tr>
+<tr><td></td><td valign="top"><a href="Null-Pointers.html#index-null-pointers">null pointers</a>:</td><td>&nbsp;</td><td valign="top"><a href="Null-Pointers.html">Null Pointers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Null-Statement.html#index-null-statement">null statement</a>:</td><td>&nbsp;</td><td valign="top"><a href="Null-Statement.html">Null Statement</a></td></tr>
+<tr><td></td><td valign="top"><a href="Preprocessing-Tokens.html#index-numbers_002c-preprocessing">numbers, preprocessing</a>:</td><td>&nbsp;</td><td valign="top"><a href="Preprocessing-Tokens.html">Preprocessing Tokens</a></td></tr>
+<tr><td></td><td valign="top"><a href="Numeric-Comparisons.html#index-numeric-comparisons">numeric comparisons</a>:</td><td>&nbsp;</td><td valign="top"><a href="Numeric-Comparisons.html">Numeric Comparisons</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-O">O</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Compilation.html#index-object-file">object file</a>:</td><td>&nbsp;</td><td valign="top"><a href="Compilation.html">Compilation</a></td></tr>
+<tr><td></td><td valign="top"><a href="Object_002dlike-Macros.html#index-object_002dlike-macro">object-like macro</a>:</td><td>&nbsp;</td><td valign="top"><a href="Object_002dlike-Macros.html">Object-like Macros</a></td></tr>
+<tr><td></td><td valign="top"><a href="Field-Offset.html#index-offset-of-structure-fields">offset of structure fields</a>:</td><td>&nbsp;</td><td valign="top"><a href="Field-Offset.html">Field Offset</a></td></tr>
+<tr><td></td><td valign="top"><a href="Old_002dStyle-Function-Definitions.html#index-old_002dstyle-function-definitions">old-style function definitions</a>:</td><td>&nbsp;</td><td valign="top"><a href="Old_002dStyle-Function-Definitions.html">Old-Style Function Definitions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Omitting-Types.html#index-omitting-types-in-declarations">omitting types in declarations</a>:</td><td>&nbsp;</td><td valign="top"><a href="Omitting-Types.html">Omitting Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Reordering-of-Operands.html#index-operand-execution-ordering">operand execution ordering</a>:</td><td>&nbsp;</td><td valign="top"><a href="Reordering-of-Operands.html">Reordering of Operands</a></td></tr>
+<tr><td></td><td valign="top"><a href="Ordering-of-Operands.html#index-operand-ordering">operand ordering</a>:</td><td>&nbsp;</td><td valign="top"><a href="Ordering-of-Operands.html">Ordering of Operands</a></td></tr>
+<tr><td></td><td valign="top"><a href="Operand-Promotions.html#index-operand-promotions">operand promotions</a>:</td><td>&nbsp;</td><td valign="top"><a href="Operand-Promotions.html">Operand Promotions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Binary-Operator-Grammar.html#index-operator-precedence">operator precedence</a>:</td><td>&nbsp;</td><td valign="top"><a href="Binary-Operator-Grammar.html">Binary Operator Grammar</a></td></tr>
+<tr><td></td><td valign="top"><a href="Basic-Arithmetic.html#index-operator_002c-addition">operator, addition</a>:</td><td>&nbsp;</td><td valign="top"><a href="Basic-Arithmetic.html">Basic Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Comma-Operator.html#index-operator_002c-comma">operator, comma</a>:</td><td>&nbsp;</td><td valign="top"><a href="Comma-Operator.html">Comma Operator</a></td></tr>
+<tr><td></td><td valign="top"><a href="Increment_002fDecrement.html#index-operator_002c-decrement">operator, decrement</a>:</td><td>&nbsp;</td><td valign="top"><a href="Increment_002fDecrement.html">Increment/Decrement</a></td></tr>
+<tr><td></td><td valign="top"><a href="Basic-Arithmetic.html#index-operator_002c-division">operator, division</a>:</td><td>&nbsp;</td><td valign="top"><a href="Basic-Arithmetic.html">Basic Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Numeric-Comparisons.html#index-operator_002c-equal">operator, equal</a>:</td><td>&nbsp;</td><td valign="top"><a href="Numeric-Comparisons.html">Numeric Comparisons</a></td></tr>
+<tr><td></td><td valign="top"><a href="Numeric-Comparisons.html#index-operator_002c-greater_002dor_002dequal">operator, greater-or-equal</a>:</td><td>&nbsp;</td><td valign="top"><a href="Numeric-Comparisons.html">Numeric Comparisons</a></td></tr>
+<tr><td></td><td valign="top"><a href="Numeric-Comparisons.html#index-operator_002c-greater_002dthan">operator, greater-than</a>:</td><td>&nbsp;</td><td valign="top"><a href="Numeric-Comparisons.html">Numeric Comparisons</a></td></tr>
+<tr><td></td><td valign="top"><a href="Increment_002fDecrement.html#index-operator_002c-increment">operator, increment</a>:</td><td>&nbsp;</td><td valign="top"><a href="Increment_002fDecrement.html">Increment/Decrement</a></td></tr>
+<tr><td></td><td valign="top"><a href="Numeric-Comparisons.html#index-operator_002c-less_002dor_002dequal">operator, less-or-equal</a>:</td><td>&nbsp;</td><td valign="top"><a href="Numeric-Comparisons.html">Numeric Comparisons</a></td></tr>
+<tr><td></td><td valign="top"><a href="Numeric-Comparisons.html#index-operator_002c-less_002dthan">operator, less-than</a>:</td><td>&nbsp;</td><td valign="top"><a href="Numeric-Comparisons.html">Numeric Comparisons</a></td></tr>
+<tr><td></td><td valign="top"><a href="Basic-Arithmetic.html#index-operator_002c-multiplication">operator, multiplication</a>:</td><td>&nbsp;</td><td valign="top"><a href="Basic-Arithmetic.html">Basic Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Basic-Arithmetic.html#index-operator_002c-negation">operator, negation</a>:</td><td>&nbsp;</td><td valign="top"><a href="Basic-Arithmetic.html">Basic Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Numeric-Comparisons.html#index-operator_002c-not_002dequal">operator, not-equal</a>:</td><td>&nbsp;</td><td valign="top"><a href="Numeric-Comparisons.html">Numeric Comparisons</a></td></tr>
+<tr><td></td><td valign="top"><a href="Postincrement_002fPostdecrement.html#index-operator_002c-postdecrement">operator, postdecrement</a>:</td><td>&nbsp;</td><td valign="top"><a href="Postincrement_002fPostdecrement.html">Postincrement/Postdecrement</a></td></tr>
+<tr><td></td><td valign="top"><a href="Postincrement_002fPostdecrement.html#index-operator_002c-postincrement">operator, postincrement</a>:</td><td>&nbsp;</td><td valign="top"><a href="Postincrement_002fPostdecrement.html">Postincrement/Postdecrement</a></td></tr>
+<tr><td></td><td valign="top"><a href="Division-and-Remainder.html#index-operator_002c-remainder">operator, remainder</a>:</td><td>&nbsp;</td><td valign="top"><a href="Division-and-Remainder.html">Division and Remainder</a></td></tr>
+<tr><td></td><td valign="top"><a href="Basic-Arithmetic.html#index-operator_002c-subtraction">operator, subtraction</a>:</td><td>&nbsp;</td><td valign="top"><a href="Basic-Arithmetic.html">Basic Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Operators_002fPunctuation.html#index-operators">operators</a>:</td><td>&nbsp;</td><td valign="top"><a href="Operators_002fPunctuation.html">Operators/Punctuation</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-operators_002c-arithmetic">operators, arithmetic</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Assignment-Expressions.html#index-operators_002c-assignment">operators, assignment</a>:</td><td>&nbsp;</td><td valign="top"><a href="Assignment-Expressions.html">Assignment Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Bitwise-Operations.html#index-operators_002c-bitwise">operators, bitwise</a>:</td><td>&nbsp;</td><td valign="top"><a href="Bitwise-Operations.html">Bitwise Operations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Numeric-Comparisons.html#index-operators_002c-comparison">operators, comparison</a>:</td><td>&nbsp;</td><td valign="top"><a href="Numeric-Comparisons.html">Numeric Comparisons</a></td></tr>
+<tr><td></td><td valign="top"><a href="Logical-Operators.html#index-operators_002c-logical">operators, logical</a>:</td><td>&nbsp;</td><td valign="top"><a href="Logical-Operators.html">Logical Operators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Shift-Operations.html#index-operators_002c-shift">operators, shift</a>:</td><td>&nbsp;</td><td valign="top"><a href="Shift-Operations.html">Shift Operations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Shift-Operations.html#index-operators_002c-shift-1">operators, shift</a>:</td><td>&nbsp;</td><td valign="top"><a href="Shift-Operations.html">Shift Operations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Optimization-and-Ordering.html#index-optimization-and-ordering">optimization and ordering</a>:</td><td>&nbsp;</td><td valign="top"><a href="Optimization-and-Ordering.html">Optimization and Ordering</a></td></tr>
+<tr><td></td><td valign="top"><a href="Order-of-Execution.html#index-order-of-execution">order of execution</a>:</td><td>&nbsp;</td><td valign="top"><a href="Order-of-Execution.html">Order of Execution</a></td></tr>
+<tr><td></td><td valign="top"><a href="Optimization-and-Ordering.html#index-ordering-and-optimization">ordering and optimization</a>:</td><td>&nbsp;</td><td valign="top"><a href="Optimization-and-Ordering.html">Optimization and Ordering</a></td></tr>
+<tr><td></td><td valign="top"><a href="Postincrement-and-Ordering.html#index-ordering-and-postincrement">ordering and postincrement</a>:</td><td>&nbsp;</td><td valign="top"><a href="Postincrement-and-Ordering.html">Postincrement and Ordering</a></td></tr>
+<tr><td></td><td valign="top"><a href="Reordering-of-Operands.html#index-ordering-of-operands">ordering of operands</a>:</td><td>&nbsp;</td><td valign="top"><a href="Reordering-of-Operands.html">Reordering of Operands</a></td></tr>
+<tr><td></td><td valign="top"><a href="Ordering-of-Operands.html#index-ordering-of-operands-1">ordering of operands</a>:</td><td>&nbsp;</td><td valign="top"><a href="Ordering-of-Operands.html">Ordering of Operands</a></td></tr>
+<tr><td></td><td valign="top"><a href="Signed-Overflow.html#index-overflow_002c-compiler-options">overflow, compiler options</a>:</td><td>&nbsp;</td><td valign="top"><a href="Signed-Overflow.html">Signed Overflow</a></td></tr>
+<tr><td></td><td valign="top"><a href="Exception-Flags.html#index-overflow_002c-floating">overflow, floating</a>:</td><td>&nbsp;</td><td valign="top"><a href="Exception-Flags.html">Exception Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-Overflow.html#index-overflow_002c-integer">overflow, integer</a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-Overflow.html">Integer Overflow</a></td></tr>
+<tr><td></td><td valign="top"><a href="Overlaying-Structures.html#index-overlaying-structures">overlaying structures</a>:</td><td>&nbsp;</td><td valign="top"><a href="Overlaying-Structures.html">Overlaying Structures</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-P">P</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Packed-Structures.html#index-packed-structures">packed structures</a>:</td><td>&nbsp;</td><td valign="top"><a href="Packed-Structures.html">Packed Structures</a></td></tr>
+<tr><td></td><td valign="top"><a href="Variable_002dLength-Array-Parameters.html#index-parameter-forward-declaration">parameter forward declaration</a>:</td><td>&nbsp;</td><td valign="top"><a href="Variable_002dLength-Array-Parameters.html">Variable-Length Array Parameters</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Parameter-Variables.html#index-parameter-list">parameter list</a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Parameter-Variables.html">Function Parameter Variables</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Parameter-Variables.html#index-parameter-variables-in-functions">parameter variables in functions</a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Parameter-Variables.html">Function Parameter Variables</a></td></tr>
+<tr><td></td><td valign="top"><a href="Variable-Number-of-Arguments.html#index-parameters-lists_002c-variable-length">parameters lists, variable length</a>:</td><td>&nbsp;</td><td valign="top"><a href="Variable-Number-of-Arguments.html">Variable Number of Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Command_002dline-Parameters.html#index-parameters_002c-command_002dline">parameters, command-line</a>:</td><td>&nbsp;</td><td valign="top"><a href="Command_002dline-Parameters.html">Command-line Parameters</a></td></tr>
+<tr><td></td><td valign="top"><a href="Operator-Precedence-Problems.html#index-parentheses-in-macro-bodies">parentheses in macro bodies</a>:</td><td>&nbsp;</td><td valign="top"><a href="Operator-Precedence-Problems.html">Operator Precedence Problems</a></td></tr>
+<tr><td></td><td valign="top"><a href="Macro-Pitfalls.html#index-pitfalls-of-macros">pitfalls of macros</a>:</td><td>&nbsp;</td><td valign="top"><a href="Macro-Pitfalls.html">Macro Pitfalls</a></td></tr>
+<tr><td></td><td valign="top"><a href="Pointer-Arithmetic.html#index-pointer-arithmetic">pointer arithmetic</a>:</td><td>&nbsp;</td><td valign="top"><a href="Pointer-Arithmetic.html">Pointer Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Pointer-Arithmetic-Drawbacks.html#index-pointer-arithmetic_002c-drawbacks">pointer arithmetic, drawbacks</a>:</td><td>&nbsp;</td><td valign="top"><a href="Pointer-Arithmetic-Drawbacks.html">Pointer Arithmetic Drawbacks</a></td></tr>
+<tr><td></td><td valign="top"><a href="Pointer-Arithmetic-Low-Level.html#index-pointer-arithmetic_002c-low-level">pointer arithmetic, low level</a>:</td><td>&nbsp;</td><td valign="top"><a href="Pointer-Arithmetic-Low-Level.html">Pointer Arithmetic Low Level</a></td></tr>
+<tr><td></td><td valign="top"><a href="Pointer-Comparison.html#index-pointer-comparison">pointer comparison</a>:</td><td>&nbsp;</td><td valign="top"><a href="Pointer-Comparison.html">Pointer Comparison</a></td></tr>
+<tr><td></td><td valign="top"><a href="Pointer-Dereference.html#index-pointer-dereferencing">pointer dereferencing</a>:</td><td>&nbsp;</td><td valign="top"><a href="Pointer-Dereference.html">Pointer Dereference</a></td></tr>
+<tr><td></td><td valign="top"><a href="Pointer-Increment_002fDecrement.html#index-pointer-increment-and-decrement">pointer increment and decrement</a>:</td><td>&nbsp;</td><td valign="top"><a href="Pointer-Increment_002fDecrement.html">Pointer Increment/Decrement</a></td></tr>
+<tr><td></td><td valign="top"><a href="Aliasing.html#index-pointer-type-conversion">pointer type conversion</a>:</td><td>&nbsp;</td><td valign="top"><a href="Aliasing.html">Aliasing</a></td></tr>
+<tr><td></td><td valign="top"><a href="Pointer_002dInteger-Conversion.html#index-pointer_002dinteger-conversion">pointer-integer conversion</a>:</td><td>&nbsp;</td><td valign="top"><a href="Pointer_002dInteger-Conversion.html">Pointer-Integer Conversion</a></td></tr>
+<tr><td></td><td valign="top"><a href="Pointers.html#index-pointers">pointers</a>:</td><td>&nbsp;</td><td valign="top"><a href="Pointers.html">Pointers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Pointers-and-Arrays.html#index-pointers-and-arrays">pointers and arrays</a>:</td><td>&nbsp;</td><td valign="top"><a href="Pointers-and-Arrays.html">Pointers and Arrays</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Pointers.html#index-pointers-to-functions">pointers to functions</a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Pointers.html">Function Pointers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Declaring-Arrays-and-Pointers.html#index-pointers_002c-declaring">pointers, declaring</a>:</td><td>&nbsp;</td><td valign="top"><a href="Declaring-Arrays-and-Pointers.html">Declaring Arrays and Pointers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Null-Pointers.html#index-pointers_002c-null">pointers, null</a>:</td><td>&nbsp;</td><td valign="top"><a href="Null-Pointers.html">Null Pointers</a></td></tr>
+<tr><td></td><td valign="top"><a href="restrict-Pointers.html#index-pointers_002c-restrict_002dqualified">pointers, <code>restrict</code>-qualified</a>:</td><td>&nbsp;</td><td valign="top"><a href="restrict-Pointers.html">restrict Pointers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Void-Pointers.html#index-pointers_002c-void">pointers, void</a>:</td><td>&nbsp;</td><td valign="top"><a href="Void-Pointers.html">Void Pointers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Postincrement_002fPostdecrement.html#index-postdecrement-expression">postdecrement expression</a>:</td><td>&nbsp;</td><td valign="top"><a href="Postincrement_002fPostdecrement.html">Postincrement/Postdecrement</a></td></tr>
+<tr><td></td><td valign="top"><a href="Postincrement-and-Ordering.html#index-postincrement-and-ordering">postincrement and ordering</a>:</td><td>&nbsp;</td><td valign="top"><a href="Postincrement-and-Ordering.html">Postincrement and Ordering</a></td></tr>
+<tr><td></td><td valign="top"><a href="Postincrement_002fPostdecrement.html#index-postincrement-expression">postincrement expression</a>:</td><td>&nbsp;</td><td valign="top"><a href="Postincrement_002fPostdecrement.html">Postincrement/Postdecrement</a></td></tr>
+<tr><td></td><td valign="top"><a href="Binary-Operator-Grammar.html#index-precedence_002c-operator">precedence, operator</a>:</td><td>&nbsp;</td><td valign="top"><a href="Binary-Operator-Grammar.html">Binary Operator Grammar</a></td></tr>
+<tr><td></td><td valign="top"><a href="Increment_002fDecrement.html#index-predecrement-expression">predecrement expression</a>:</td><td>&nbsp;</td><td valign="top"><a href="Increment_002fDecrement.html">Increment/Decrement</a></td></tr>
+<tr><td></td><td valign="top"><a href="Predefined-Macros.html#index-predefined-macros">predefined macros</a>:</td><td>&nbsp;</td><td valign="top"><a href="Predefined-Macros.html">Predefined Macros</a></td></tr>
+<tr><td></td><td valign="top"><a href="Increment_002fDecrement.html#index-preincrement-expression">preincrement expression</a>:</td><td>&nbsp;</td><td valign="top"><a href="Increment_002fDecrement.html">Increment/Decrement</a></td></tr>
+<tr><td></td><td valign="top"><a href="Preprocessing.html#index-preprocessing">preprocessing</a>:</td><td>&nbsp;</td><td valign="top"><a href="Preprocessing.html">Preprocessing</a></td></tr>
+<tr><td></td><td valign="top"><a href="Directives.html#index-preprocessing-directives">preprocessing directives</a>:</td><td>&nbsp;</td><td valign="top"><a href="Directives.html">Directives</a></td></tr>
+<tr><td></td><td valign="top"><a href="Preprocessing-Tokens.html#index-preprocessing-numbers">preprocessing numbers</a>:</td><td>&nbsp;</td><td valign="top"><a href="Preprocessing-Tokens.html">Preprocessing Tokens</a></td></tr>
+<tr><td></td><td valign="top"><a href="Preprocessing-Tokens.html#index-preprocessing-tokens">preprocessing tokens</a>:</td><td>&nbsp;</td><td valign="top"><a href="Preprocessing-Tokens.html">Preprocessing Tokens</a></td></tr>
+<tr><td></td><td valign="top"><a href="Argument-Prescan.html#index-prescan-of-macro-arguments">prescan of macro arguments</a>:</td><td>&nbsp;</td><td valign="top"><a href="Argument-Prescan.html">Argument Prescan</a></td></tr>
+<tr><td></td><td valign="top"><a href="Primitive-Types.html#index-primitive-types">primitive types</a>:</td><td>&nbsp;</td><td valign="top"><a href="Primitive-Types.html">Primitive Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Complete-Explanation.html#index-printf"><code>printf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Complete-Explanation.html">Complete Explanation</a></td></tr>
+<tr><td></td><td valign="top"><a href="Macro-Pitfalls.html#index-problems-with-macros">problems with macros</a>:</td><td>&nbsp;</td><td valign="top"><a href="Macro-Pitfalls.html">Macro Pitfalls</a></td></tr>
+<tr><td></td><td valign="top"><a href="Argument-Promotions.html#index-promotion-of-arguments">promotion of arguments</a>:</td><td>&nbsp;</td><td valign="top"><a href="Argument-Promotions.html">Argument Promotions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Declarations.html#index-prototype-of-a-function">prototype of a function</a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Declarations.html">Function Declarations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Operators_002fPunctuation.html#index-punctuation">punctuation</a>:</td><td>&nbsp;</td><td valign="top"><a href="Operators_002fPunctuation.html">Operators/Punctuation</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-Q">Q</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Special-Float-Values.html#index-QNaN">QNaN</a>:</td><td>&nbsp;</td><td valign="top"><a href="Special-Float-Values.html">Special Float Values</a></td></tr>
+<tr><td></td><td valign="top"><a href="Search-Path.html#index-quote-directories">quote directories</a>:</td><td>&nbsp;</td><td valign="top"><a href="Search-Path.html">Search Path</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-R">R</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Case-Ranges.html#index-ranges-in-case-statements">ranges in case statements</a>:</td><td>&nbsp;</td><td valign="top"><a href="Case-Ranges.html">Case Ranges</a></td></tr>
+<tr><td></td><td valign="top"><a href="Maximum-and-Minimum-Values.html#index-ranges-of-integer-types">ranges of integer types</a>:</td><td>&nbsp;</td><td valign="top"><a href="Maximum-and-Minimum-Values.html">Maximum and Minimum Values</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Body.html#index-recursion">recursion</a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Body.html">Function Body</a></td></tr>
+<tr><td></td><td valign="top"><a href="Stack.html#index-recursion_002c-drawbacks-of">recursion, drawbacks of</a>:</td><td>&nbsp;</td><td valign="top"><a href="Stack.html">Stack</a></td></tr>
+<tr><td></td><td valign="top"><a href="Recursive-Fibonacci.html#index-recursive-Fibonacci-function">recursive Fibonacci function</a>:</td><td>&nbsp;</td><td valign="top"><a href="Recursive-Fibonacci.html">Recursive Fibonacci</a></td></tr>
+<tr><td></td><td valign="top"><a href="Undefining-and-Redefining-Macros.html#index-redefining-macros">redefining macros</a>:</td><td>&nbsp;</td><td valign="top"><a href="Undefining-and-Redefining-Macros.html">Undefining and Redefining Macros</a></td></tr>
+<tr><td></td><td valign="top"><a href="Referencing-Fields.html#index-referencing-structure-fields">referencing structure fields</a>:</td><td>&nbsp;</td><td valign="top"><a href="Referencing-Fields.html">Referencing Fields</a></td></tr>
+<tr><td></td><td valign="top"><a href="auto-and-register.html#index-register-declarations"><code>register</code> declarations</a>:</td><td>&nbsp;</td><td valign="top"><a href="auto-and-register.html">auto and register</a></td></tr>
+<tr><td></td><td valign="top"><a href="Division-and-Remainder.html#index-remainder-operator">remainder operator</a>:</td><td>&nbsp;</td><td valign="top"><a href="Division-and-Remainder.html">Division and Remainder</a></td></tr>
+<tr><td></td><td valign="top"><a href="Reordering-of-Operands.html#index-reordering-of-operands">reordering of operands</a>:</td><td>&nbsp;</td><td valign="top"><a href="Reordering-of-Operands.html">Reordering of Operands</a></td></tr>
+<tr><td></td><td valign="top"><a href="Once_002dOnly-Headers.html#index-repeated-inclusion">repeated inclusion</a>:</td><td>&nbsp;</td><td valign="top"><a href="Once_002dOnly-Headers.html">Once-Only Headers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Diagnostics.html#index-reporting-errors">reporting errors</a>:</td><td>&nbsp;</td><td valign="top"><a href="Diagnostics.html">Diagnostics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Diagnostics.html#index-reporting-warnings">reporting warnings</a>:</td><td>&nbsp;</td><td valign="top"><a href="Diagnostics.html">Diagnostics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Floating-Representations.html#index-representation-of-floating_002dpoint-numbers">representation of floating-point numbers</a>:</td><td>&nbsp;</td><td valign="top"><a href="Floating-Representations.html">Floating Representations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-Representations.html#index-representation-of-integers">representation of integers</a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-Representations.html">Integer Representations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Identifiers.html#index-reserved-words">reserved words</a>:</td><td>&nbsp;</td><td valign="top"><a href="Identifiers.html">Identifiers</a></td></tr>
+<tr><td></td><td valign="top"><a href="restrict-Pointers.html#index-restrict-pointers"><code>restrict</code> pointers</a>:</td><td>&nbsp;</td><td valign="top"><a href="restrict-Pointers.html">restrict Pointers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Character-Constants.html#index-return-_0028ASCII-character_0029">return (ASCII character)</a>:</td><td>&nbsp;</td><td valign="top"><a href="Character-Constants.html">Character Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="return-Statement.html#index-return-statement"><code>return</code> statement</a>:</td><td>&nbsp;</td><td valign="top"><a href="return-Statement.html">return Statement</a></td></tr>
+<tr><td></td><td valign="top"><a href="Values-from-main.html#index-returning-values-from-main">returning values from <code>main</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Values-from-main.html">Values from main</a></td></tr>
+<tr><td></td><td valign="top"><a href="Round_002dTrip-Base-Conversion.html#index-round_002dtrip-base-conversion">round-trip base conversion</a>:</td><td>&nbsp;</td><td valign="top"><a href="Round_002dTrip-Base-Conversion.html">Round-Trip Base Conversion</a></td></tr>
+<tr><td></td><td valign="top"><a href="Rounding.html#index-rounding">rounding</a>:</td><td>&nbsp;</td><td valign="top"><a href="Rounding.html">Rounding</a></td></tr>
+<tr><td></td><td valign="top"><a href="Rounding-Control.html#index-rounding-control-_0028floating-point_0029">rounding control (floating point)</a>:</td><td>&nbsp;</td><td valign="top"><a href="Rounding-Control.html">Rounding Control</a></td></tr>
+<tr><td></td><td valign="top"><a href="Rounding-Issues.html#index-rounding-issues-_0028floating-point_0029">rounding issues (floating point)</a>:</td><td>&nbsp;</td><td valign="top"><a href="Rounding-Issues.html">Rounding Issues</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-S">S</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Scaling-by-the-Base.html#index-scaling-floating-point-by-powers-of-the-base">scaling floating point by powers of the base</a>:</td><td>&nbsp;</td><td valign="top"><a href="Scaling-by-the-Base.html">Scaling by the Base</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scope.html#index-scope">scope</a>:</td><td>&nbsp;</td><td valign="top"><a href="Scope.html">Scope</a></td></tr>
+<tr><td></td><td valign="top"><a href="Stack.html#index-segmentation-fault">segmentation fault</a>:</td><td>&nbsp;</td><td valign="top"><a href="Stack.html">Stack</a></td></tr>
+<tr><td></td><td valign="top"><a href="Self_002dReferential-Macros.html#index-self_002dreference">self-reference</a>:</td><td>&nbsp;</td><td valign="top"><a href="Self_002dReferential-Macros.html">Self-Referential Macros</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Call-Semantics.html#index-semantics-of-function-calls">semantics of function calls</a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Call-Semantics.html">Function Call Semantics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Swallowing-the-Semicolon.html#index-semicolons-_0028after-macro-calls_0029">semicolons (after macro calls)</a>:</td><td>&nbsp;</td><td valign="top"><a href="Swallowing-the-Semicolon.html">Swallowing the Semicolon</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sequence-Points.html#index-sequence-points">sequence points</a>:</td><td>&nbsp;</td><td valign="top"><a href="Sequence-Points.html">Sequence Points</a></td></tr>
+<tr><td></td><td valign="top"><a href="Shift-Operations.html#index-shift-count">shift count</a>:</td><td>&nbsp;</td><td valign="top"><a href="Shift-Operations.html">Shift Operations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Shift-Operations.html#index-shift-operators">shift operators</a>:</td><td>&nbsp;</td><td valign="top"><a href="Shift-Operations.html">Shift Operations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Conditional-Branches.html#index-side-effect-in-_003f_003a">side effect in ?:</a>:</td><td>&nbsp;</td><td valign="top"><a href="Conditional-Branches.html">Conditional Branches</a></td></tr>
+<tr><td></td><td valign="top"><a href="Duplication-of-Side-Effects.html#index-side-effects-_0028in-macro-arguments_0029">side effects (in macro arguments)</a>:</td><td>&nbsp;</td><td valign="top"><a href="Duplication-of-Side-Effects.html">Duplication of Side Effects</a></td></tr>
+<tr><td></td><td valign="top"><a href="Signals.html#index-SIGBUS"><code>SIGBUS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Signals.html">Signals</a></td></tr>
+<tr><td></td><td valign="top"><a href="Signals.html#index-SIGFPE"><code>SIGFPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Signals.html">Signals</a></td></tr>
+<tr><td></td><td valign="top"><a href="Signals.html#index-signal">signal</a>:</td><td>&nbsp;</td><td valign="top"><a href="Signals.html">Signals</a></td></tr>
+<tr><td></td><td valign="top"><a href="Signed-and-Unsigned-Types.html#index-signed-types">signed types</a>:</td><td>&nbsp;</td><td valign="top"><a href="Signed-and-Unsigned-Types.html">Signed and Unsigned Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Signed-Zeros.html#index-signed-zeros-in-floating_002dpoint-arithmetic">signed zeros in floating-point arithmetic</a>:</td><td>&nbsp;</td><td valign="top"><a href="Signed-Zeros.html">Signed Zeros</a></td></tr>
+<tr><td></td><td valign="top"><a href="Significance-Loss.html#index-significance-loss-_0028floating-point_0029">significance loss (floating point)</a>:</td><td>&nbsp;</td><td valign="top"><a href="Significance-Loss.html">Significance Loss</a></td></tr>
+<tr><td></td><td valign="top"><a href="Signals.html#index-SIGSEGV"><code>SIGSEGV</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Signals.html">Signals</a></td></tr>
+<tr><td></td><td valign="top"><a href="Simple-Assignment.html#index-simple-assignment">simple assignment</a>:</td><td>&nbsp;</td><td valign="top"><a href="Simple-Assignment.html">Simple Assignment</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Size.html#index-size-of-type">size of type</a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Size.html">Type Size</a></td></tr>
+<tr><td></td><td valign="top"><a href="Special-Float-Values.html#index-SNaN">SNaN</a>:</td><td>&nbsp;</td><td valign="top"><a href="Special-Float-Values.html">Special Float Values</a></td></tr>
+<tr><td></td><td valign="top"><a href="Whitespace.html#index-space-character-in-source">space character in source</a>:</td><td>&nbsp;</td><td valign="top"><a href="Whitespace.html">Whitespace</a></td></tr>
+<tr><td></td><td valign="top"><a href="Special-Float-Values.html#index-special-floating_002dpoint-values">special floating-point values</a>:</td><td>&nbsp;</td><td valign="top"><a href="Special-Float-Values.html">Special Float Values</a></td></tr>
+<tr><td></td><td valign="top"><a href="Stack.html#index-stack">stack</a>:</td><td>&nbsp;</td><td valign="top"><a href="Stack.html">Stack</a></td></tr>
+<tr><td></td><td valign="top"><a href="Stack.html#index-stack-frame">stack frame</a>:</td><td>&nbsp;</td><td valign="top"><a href="Stack.html">Stack</a></td></tr>
+<tr><td></td><td valign="top"><a href="Stack.html#index-stack-frame-1">stack frame</a>:</td><td>&nbsp;</td><td valign="top"><a href="Stack.html">Stack</a></td></tr>
+<tr><td></td><td valign="top"><a href="Stack.html#index-stack-overflow">stack overflow</a>:</td><td>&nbsp;</td><td valign="top"><a href="Stack.html">Stack</a></td></tr>
+<tr><td></td><td valign="top"><a href="Complete-Explanation.html#index-standard-output">standard output</a>:</td><td>&nbsp;</td><td valign="top"><a href="Complete-Explanation.html">Complete Explanation</a></td></tr>
+<tr><td></td><td valign="top"><a href="break-Statement.html#index-statement_002c-break">statement, <code>break</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="break-Statement.html">break Statement</a></td></tr>
+<tr><td></td><td valign="top"><a href="continue-Statement.html#index-statement_002c-continue">statement, <code>continue</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="continue-Statement.html">continue Statement</a></td></tr>
+<tr><td></td><td valign="top"><a href="do_002dwhile-Statement.html#index-statement_002c-do_002d_002dwhile">statement, <code>do</code>&ndash;<code>while</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="do_002dwhile-Statement.html">do-while Statement</a></td></tr>
+<tr><td></td><td valign="top"><a href="Expression-Statement.html#index-statement_002c-expression">statement, expression</a>:</td><td>&nbsp;</td><td valign="top"><a href="Expression-Statement.html">Expression Statement</a></td></tr>
+<tr><td></td><td valign="top"><a href="for-Statement.html#index-statement_002c-for">statement, <code>for</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="for-Statement.html">for Statement</a></td></tr>
+<tr><td></td><td valign="top"><a href="goto-Statement.html#index-statement_002c-goto">statement, <code>goto</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="goto-Statement.html">goto Statement</a></td></tr>
+<tr><td></td><td valign="top"><a href="if-Statement.html#index-statement_002c-if">statement, <code>if</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="if-Statement.html">if Statement</a></td></tr>
+<tr><td></td><td valign="top"><a href="if_002delse-Statement.html#index-statement_002c-if_2026else">statement, <code>if</code>&hellip;<code>else</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="if_002delse-Statement.html">if-else Statement</a></td></tr>
+<tr><td></td><td valign="top"><a href="Null-Statement.html#index-statement_002c-null">statement, null</a>:</td><td>&nbsp;</td><td valign="top"><a href="Null-Statement.html">Null Statement</a></td></tr>
+<tr><td></td><td valign="top"><a href="return-Statement.html#index-statement_002c-return">statement, <code>return</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="return-Statement.html">return Statement</a></td></tr>
+<tr><td></td><td valign="top"><a href="switch-Statement.html#index-statement_002c-switch">statement, <code>switch</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="switch-Statement.html">switch Statement</a></td></tr>
+<tr><td></td><td valign="top"><a href="while-Statement.html#index-statement_002c-while">statement, <code>while</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="while-Statement.html">while Statement</a></td></tr>
+<tr><td></td><td valign="top"><a href="Statements.html#index-statements">statements</a>:</td><td>&nbsp;</td><td valign="top"><a href="Statements.html">Statements</a></td></tr>
+<tr><td></td><td valign="top"><a href="Statement-Exprs.html#index-statements-inside-expressions">statements inside expressions</a>:</td><td>&nbsp;</td><td valign="top"><a href="Statement-Exprs.html">Statement Exprs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Loop-Statements.html#index-statements_002c-loop">statements, loop</a>:</td><td>&nbsp;</td><td valign="top"><a href="Loop-Statements.html">Loop Statements</a></td></tr>
+<tr><td></td><td valign="top"><a href="Static-Assertions.html#index-static-assertions">static assertions</a>:</td><td>&nbsp;</td><td valign="top"><a href="Static-Assertions.html">Static Assertions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Static-Functions.html#index-static-function_002c-declaration">static function, declaration</a>:</td><td>&nbsp;</td><td valign="top"><a href="Static-Functions.html">Static Functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Static-Functions.html#index-static-functions">static functions</a>:</td><td>&nbsp;</td><td valign="top"><a href="Static-Functions.html">Static Functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Static-Local-Variables.html#index-static-local-variables">static local variables</a>:</td><td>&nbsp;</td><td valign="top"><a href="Static-Local-Variables.html">Static Local Variables</a></td></tr>
+<tr><td></td><td valign="top"><a href="Exception-Flags.html#index-sticky-exception-flags-_0028floating-point_0029">sticky exception flags (floating point)</a>:</td><td>&nbsp;</td><td valign="top"><a href="Exception-Flags.html">Exception Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage.html#index-storage-organization">storage organization</a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage.html">Storage</a></td></tr>
+<tr><td></td><td valign="top"><a href="Strings.html#index-string">string</a>:</td><td>&nbsp;</td><td valign="top"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="String-Constants.html#index-string-constants">string constants</a>:</td><td>&nbsp;</td><td valign="top"><a href="String-Constants.html">String Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="Stringification.html#index-stringification">stringification</a>:</td><td>&nbsp;</td><td valign="top"><a href="Stringification.html">Stringification</a></td></tr>
+<tr><td></td><td valign="top"><a href="Structure-Assignment.html#index-structure-assignment">structure assignment</a>:</td><td>&nbsp;</td><td valign="top"><a href="Structure-Assignment.html">Structure Assignment</a></td></tr>
+<tr><td></td><td valign="top"><a href="Structure-Constructors.html#index-structure-constructors">structure constructors</a>:</td><td>&nbsp;</td><td valign="top"><a href="Structure-Constructors.html">Structure Constructors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Field-Offset.html#index-structure-field-offset">structure field offset</a>:</td><td>&nbsp;</td><td valign="top"><a href="Field-Offset.html">Field Offset</a></td></tr>
+<tr><td></td><td valign="top"><a href="const-Fields.html#index-structure-fields_002c-constant">structure fields, constant</a>:</td><td>&nbsp;</td><td valign="top"><a href="const-Fields.html">const Fields</a></td></tr>
+<tr><td></td><td valign="top"><a href="Referencing-Fields.html#index-structure-fields_002c-referencing">structure fields, referencing</a>:</td><td>&nbsp;</td><td valign="top"><a href="Referencing-Fields.html">Referencing Fields</a></td></tr>
+<tr><td></td><td valign="top"><a href="Structure-Layout.html#index-structure-layout">structure layout</a>:</td><td>&nbsp;</td><td valign="top"><a href="Structure-Layout.html">Structure Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Structures.html#index-structures">structures</a>:</td><td>&nbsp;</td><td valign="top"><a href="Structures.html">Structures</a></td></tr>
+<tr><td></td><td valign="top"><a href="Overlaying-Structures.html#index-structures_002c-overlaying">structures, overlaying</a>:</td><td>&nbsp;</td><td valign="top"><a href="Overlaying-Structures.html">Overlaying Structures</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unnamed-Types-as-Fields.html#index-structures_002c-unnamed">structures, unnamed</a>:</td><td>&nbsp;</td><td valign="top"><a href="Unnamed-Types-as-Fields.html">Unnamed Types as Fields</a></td></tr>
+<tr><td></td><td valign="top"><a href="Assignment-in-Subexpressions.html#index-subexpressions_002c-assignment-in">subexpressions, assignment in</a>:</td><td>&nbsp;</td><td valign="top"><a href="Assignment-in-Subexpressions.html">Assignment in Subexpressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Special-Float-Values.html#index-subnormal-numbers">subnormal numbers</a>:</td><td>&nbsp;</td><td valign="top"><a href="Special-Float-Values.html">Special Float Values</a></td></tr>
+<tr><td></td><td valign="top"><a href="Basic-Arithmetic.html#index-subtraction-operator">subtraction operator</a>:</td><td>&nbsp;</td><td valign="top"><a href="Basic-Arithmetic.html">Basic Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Values-from-main.html#index-success">success</a>:</td><td>&nbsp;</td><td valign="top"><a href="Values-from-main.html">Values from main</a></td></tr>
+<tr><td></td><td valign="top"><a href="switch-Statement.html#index-switch-statement"><code>switch</code> statement</a>:</td><td>&nbsp;</td><td valign="top"><a href="switch-Statement.html">switch Statement</a></td></tr>
+<tr><td></td><td valign="top"><a href="Object_002dlike-Macros.html#index-symbolic-constants">symbolic constants</a>:</td><td>&nbsp;</td><td valign="top"><a href="Object_002dlike-Macros.html">Object-like Macros</a></td></tr>
+<tr><td></td><td valign="top"><a href="Header-Files.html#index-system-header-files">system header files</a>:</td><td>&nbsp;</td><td valign="top"><a href="Header-Files.html">Header Files</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-T">T</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Character-Constants.html#index-tab-_0028ASCII-character_0029">tab (ASCII character)</a>:</td><td>&nbsp;</td><td valign="top"><a href="Character-Constants.html">Character Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="Whitespace.html#index-tab-character-in-source">tab character in source</a>:</td><td>&nbsp;</td><td valign="top"><a href="Whitespace.html">Whitespace</a></td></tr>
+<tr><td></td><td valign="top"><a href="Allocating-File_002dScope.html#index-tentative-definition">tentative definition</a>:</td><td>&nbsp;</td><td valign="top"><a href="Allocating-File_002dScope.html">Allocating File-Scope</a></td></tr>
+<tr><td></td><td valign="top"><a href="Nested-Functions.html#index-thunks">thunks</a>:</td><td>&nbsp;</td><td valign="top"><a href="Nested-Functions.html">Nested Functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Lexical-Syntax.html#index-token">token</a>:</td><td>&nbsp;</td><td valign="top"><a href="Lexical-Syntax.html">Lexical Syntax</a></td></tr>
+<tr><td></td><td valign="top"><a href="Concatenation.html#index-token-concatenation">token concatenation</a>:</td><td>&nbsp;</td><td valign="top"><a href="Concatenation.html">Concatenation</a></td></tr>
+<tr><td></td><td valign="top"><a href="Concatenation.html#index-token-pasting">token pasting</a>:</td><td>&nbsp;</td><td valign="top"><a href="Concatenation.html">Concatenation</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-Conversion.html#index-truncation">truncation</a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-Conversion.html">Integer Conversion</a></td></tr>
+<tr><td></td><td valign="top"><a href="Numeric-Comparisons.html#index-truth-value">truth value</a>:</td><td>&nbsp;</td><td valign="top"><a href="Numeric-Comparisons.html">Numeric Comparisons</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-Representations.html#index-two_0027s_002dcomplement-representation">two&rsquo;s-complement representation</a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-Representations.html">Integer Representations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Error-Recovery.html#index-twosum">twosum</a>:</td><td>&nbsp;</td><td valign="top"><a href="Error-Recovery.html">Error Recovery</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Alignment.html#index-type-alignment">type alignment</a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Alignment.html">Type Alignment</a></td></tr>
+<tr><td></td><td valign="top"><a href="Aliasing.html#index-type-conversion_002c-pointer">type conversion, pointer</a>:</td><td>&nbsp;</td><td valign="top"><a href="Aliasing.html">Aliasing</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Conversions.html#index-type-conversions">type conversions</a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Conversions.html">Type Conversions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Designators.html#index-type-designator">type designator</a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Designators.html">Type Designators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Size.html#index-type-size">type size</a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Size.html">Type Size</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Tags.html#index-type-tags">type tags</a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Tags.html">Type Tags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Boolean-Type.html#index-type_002c-boolean">type, boolean</a>:</td><td>&nbsp;</td><td valign="top"><a href="Boolean-Type.html">Boolean Type</a></td></tr>
+<tr><td></td><td valign="top"><a href="The-Void-Type.html#index-type_002c-void">type, void</a>:</td><td>&nbsp;</td><td valign="top"><a href="The-Void-Type.html">The Void Type</a></td></tr>
+<tr><td></td><td valign="top"><a href="Defining-Typedef-Names.html#index-typedef-names">typedef names</a>:</td><td>&nbsp;</td><td valign="top"><a href="Defining-Typedef-Names.html">Defining Typedef Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-Const-Type.html#index-types-of-integer-constants">types of integer constants</a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-Const-Type.html">Integer Const Type</a></td></tr>
+<tr><td></td><td valign="top"><a href="Compatible-Types.html#index-types_002c-compatible">types, compatible</a>:</td><td>&nbsp;</td><td valign="top"><a href="Compatible-Types.html">Compatible Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Complex-Data-Types.html#index-types_002c-complex">types, complex</a>:</td><td>&nbsp;</td><td valign="top"><a href="Complex-Data-Types.html">Complex Data Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Enumeration-Types.html#index-types_002c-enumeration">types, enumeration</a>:</td><td>&nbsp;</td><td valign="top"><a href="Enumeration-Types.html">Enumeration Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Floating_002dPoint-Data-Types.html#index-types_002c-floating_002dpoint">types, floating-point</a>:</td><td>&nbsp;</td><td valign="top"><a href="Floating_002dPoint-Data-Types.html">Floating-Point Data Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Incomplete-Types.html#index-types_002c-incomplete">types, incomplete</a>:</td><td>&nbsp;</td><td valign="top"><a href="Incomplete-Types.html">Incomplete Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-Types.html#index-types_002c-integer">types, integer</a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-Types.html">Integer Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Primitive-Types.html#index-types_002c-primitive">types, primitive</a>:</td><td>&nbsp;</td><td valign="top"><a href="Primitive-Types.html">Primitive Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Signed-and-Unsigned-Types.html#index-types_002c-signed">types, signed</a>:</td><td>&nbsp;</td><td valign="top"><a href="Signed-and-Unsigned-Types.html">Signed and Unsigned Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Signed-and-Unsigned-Types.html#index-types_002c-unsigned">types, unsigned</a>:</td><td>&nbsp;</td><td valign="top"><a href="Signed-and-Unsigned-Types.html">Signed and Unsigned Types</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-U">U</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Pointer_002dInteger-Conversion.html#index-uintptr_005ft"><code>uintptr_t</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Pointer_002dInteger-Conversion.html">Pointer-Integer Conversion</a></td></tr>
+<tr><td></td><td valign="top"><a href="Undefining-and-Redefining-Macros.html#index-undefining-macros">undefining macros</a>:</td><td>&nbsp;</td><td valign="top"><a href="Undefining-and-Redefining-Macros.html">Undefining and Redefining Macros</a></td></tr>
+<tr><td></td><td valign="top"><a href="Special-Float-Values.html#index-underflow_002c-floating">underflow, floating</a>:</td><td>&nbsp;</td><td valign="top"><a href="Special-Float-Values.html">Special Float Values</a></td></tr>
+<tr><td></td><td valign="top"><a href="Exception-Flags.html#index-underflow_002c-floating-1">underflow, floating</a>:</td><td>&nbsp;</td><td valign="top"><a href="Exception-Flags.html">Exception Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Macros-and-Auto-Type.html#index-underscores-in-variables-in-macros">underscores in variables in macros</a>:</td><td>&nbsp;</td><td valign="top"><a href="Macros-and-Auto-Type.html">Macros and Auto Type</a></td></tr>
+<tr><td></td><td valign="top"><a href="Characters.html#index-Unicode">Unicode</a>:</td><td>&nbsp;</td><td valign="top"><a href="Characters.html">Characters</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unicode-Character-Codes.html#index-Unicode-character-codes">Unicode character codes</a>:</td><td>&nbsp;</td><td valign="top"><a href="Unicode-Character-Codes.html">Unicode Character Codes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Cast-to-Union.html#index-union_002c-casting-to-a">union, casting to a</a>:</td><td>&nbsp;</td><td valign="top"><a href="Cast-to-Union.html">Cast to Union</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unions.html#index-unions">unions</a>:</td><td>&nbsp;</td><td valign="top"><a href="Unions.html">Unions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unnamed-Types-as-Fields.html#index-unions_002c-unnamed">unions, unnamed</a>:</td><td>&nbsp;</td><td valign="top"><a href="Unnamed-Types-as-Fields.html">Unnamed Types as Fields</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unicode-Character-Codes.html#index-universal-character-names">universal character names</a>:</td><td>&nbsp;</td><td valign="top"><a href="Unicode-Character-Codes.html">Unicode Character Codes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unnamed-Types-as-Fields.html#index-unnamed-structures">unnamed structures</a>:</td><td>&nbsp;</td><td valign="top"><a href="Unnamed-Types-as-Fields.html">Unnamed Types as Fields</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unnamed-Types-as-Fields.html#index-unnamed-unions">unnamed unions</a>:</td><td>&nbsp;</td><td valign="top"><a href="Unnamed-Types-as-Fields.html">Unnamed Types as Fields</a></td></tr>
+<tr><td></td><td valign="top"><a href="Duplication-of-Side-Effects.html#index-unsafe-macros">unsafe macros</a>:</td><td>&nbsp;</td><td valign="top"><a href="Duplication-of-Side-Effects.html">Duplication of Side Effects</a></td></tr>
+<tr><td></td><td valign="top"><a href="Signed-and-Unsigned-Types.html#index-unsigned-types">unsigned types</a>:</td><td>&nbsp;</td><td valign="top"><a href="Signed-and-Unsigned-Types.html">Signed and Unsigned Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="UTF_002d8-String-Constants.html#index-UTF_002d8-String-Constants">UTF-8 String Constants</a>:</td><td>&nbsp;</td><td valign="top"><a href="UTF_002d8-String-Constants.html">UTF-8 String Constants</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-V">V</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Variable-Declarations.html#index-variable-declarations">variable declarations</a>:</td><td>&nbsp;</td><td valign="top"><a href="Variable-Declarations.html">Variable Declarations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Combining-Variable-Declarations.html#index-variable-declarations_002c-combining">variable declarations, combining</a>:</td><td>&nbsp;</td><td valign="top"><a href="Combining-Variable-Declarations.html">Combining Variable Declarations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Variadic-Macros.html#index-variable-number-of-arguments">variable number of arguments</a>:</td><td>&nbsp;</td><td valign="top"><a href="Variadic-Macros.html">Variadic Macros</a></td></tr>
+<tr><td></td><td valign="top"><a href="Variable_002dLength-Array-Parameters.html#index-variable_002dlength-array-parameters">variable-length array parameters</a>:</td><td>&nbsp;</td><td valign="top"><a href="Variable_002dLength-Array-Parameters.html">Variable-Length Array Parameters</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arrays-of-Variable-Length.html#index-variable_002dlength-arrays">variable-length arrays</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arrays-of-Variable-Length.html">Arrays of Variable Length</a></td></tr>
+<tr><td></td><td valign="top"><a href="Variable-Number-of-Arguments.html#index-variable_002dlength-parameter-lists">variable-length parameter lists</a>:</td><td>&nbsp;</td><td valign="top"><a href="Variable-Number-of-Arguments.html">Variable Number of Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Variables.html#index-variables">variables</a>:</td><td>&nbsp;</td><td valign="top"><a href="Variables.html">Variables</a></td></tr>
+<tr><td></td><td valign="top"><a href="const.html#index-variables_002c-const">variables, <code>const</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="const.html">const</a></td></tr>
+<tr><td></td><td valign="top"><a href="File_002dScope-Variables.html#index-variables_002c-file_002dscope">variables, file-scope</a>:</td><td>&nbsp;</td><td valign="top"><a href="File_002dScope-Variables.html">File-Scope Variables</a></td></tr>
+<tr><td></td><td valign="top"><a href="File_002dScope-Variables.html#index-variables_002c-global">variables, global</a>:</td><td>&nbsp;</td><td valign="top"><a href="File_002dScope-Variables.html">File-Scope Variables</a></td></tr>
+<tr><td></td><td valign="top"><a href="Local-Variables.html#index-variables_002c-local">variables, local</a>:</td><td>&nbsp;</td><td valign="top"><a href="Local-Variables.html">Local Variables</a></td></tr>
+<tr><td></td><td valign="top"><a href="Macros-and-Auto-Type.html#index-variables_002c-local_002c-in-macros">variables, local, in macros</a>:</td><td>&nbsp;</td><td valign="top"><a href="Macros-and-Auto-Type.html">Macros and Auto Type</a></td></tr>
+<tr><td></td><td valign="top"><a href="Static-Local-Variables.html#index-variables_002c-static-local">variables, static local</a>:</td><td>&nbsp;</td><td valign="top"><a href="Static-Local-Variables.html">Static Local Variables</a></td></tr>
+<tr><td></td><td valign="top"><a href="volatile.html#index-variables_002c-volatile">variables, <code>volatile</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="volatile.html">volatile</a></td></tr>
+<tr><td></td><td valign="top"><a href="Variable-Number-of-Arguments.html#index-variadic-function">variadic function</a>:</td><td>&nbsp;</td><td valign="top"><a href="Variable-Number-of-Arguments.html">Variable Number of Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Variadic-Macros.html#index-variadic-macros">variadic macros</a>:</td><td>&nbsp;</td><td valign="top"><a href="Variadic-Macros.html">Variadic Macros</a></td></tr>
+<tr><td></td><td valign="top"><a href="Variable-Number-of-Arguments.html#index-va_005fcopy"><code>va_copy</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Variable-Number-of-Arguments.html">Variable Number of Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Variable-Number-of-Arguments.html#index-va_005fend"><code>va_end</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Variable-Number-of-Arguments.html">Variable Number of Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Variable-Number-of-Arguments.html#index-va_005flist"><code>va_list</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Variable-Number-of-Arguments.html">Variable Number of Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Variable-Number-of-Arguments.html#index-va_005fstart"><code>va_start</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Variable-Number-of-Arguments.html">Variable Number of Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Character-Constants.html#index-vertical-tab">vertical tab</a>:</td><td>&nbsp;</td><td valign="top"><a href="Character-Constants.html">Character Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="Whitespace.html#index-vertical-tab-in-source">vertical tab in source</a>:</td><td>&nbsp;</td><td valign="top"><a href="Whitespace.html">Whitespace</a></td></tr>
+<tr><td></td><td valign="top"><a href="Void-Pointers.html#index-void-pointers">void pointers</a>:</td><td>&nbsp;</td><td valign="top"><a href="Void-Pointers.html">Void Pointers</a></td></tr>
+<tr><td></td><td valign="top"><a href="The-Void-Type.html#index-void-type">void type</a>:</td><td>&nbsp;</td><td valign="top"><a href="The-Void-Type.html">The Void Type</a></td></tr>
+<tr><td></td><td valign="top"><a href="volatile.html#index-volatile-variables-and-fields"><code>volatile</code> variables and fields</a>:</td><td>&nbsp;</td><td valign="top"><a href="volatile.html">volatile</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-W">W</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="while-Statement.html#index-while-statement"><code>while</code> statement</a>:</td><td>&nbsp;</td><td valign="top"><a href="while-Statement.html">while Statement</a></td></tr>
+<tr><td></td><td valign="top"><a href="Whitespace.html#index-whitespace-characters-in-source-files">whitespace characters in source files</a>:</td><td>&nbsp;</td><td valign="top"><a href="Whitespace.html">Whitespace</a></td></tr>
+<tr><td></td><td valign="top"><a href="Wide-Character-Constants.html#index-wide-character-constants">wide character constants</a>:</td><td>&nbsp;</td><td valign="top"><a href="Wide-Character-Constants.html">Wide Character Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="Wide-String-Constants.html#index-wide-string-constants">wide string constants</a>:</td><td>&nbsp;</td><td valign="top"><a href="Wide-String-Constants.html">Wide String Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="Once_002dOnly-Headers.html#index-wrapper-_0023ifndef">wrapper <code>#ifndef</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Once_002dOnly-Headers.html">Once-Only Headers</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-Z">Z</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Division-and-Remainder.html#index-zero_002c-division-by">zero, division by</a>:</td><td>&nbsp;</td><td valign="top"><a href="Division-and-Remainder.html">Division and Remainder</a></td></tr>
+<tr><td></td><td valign="top"><a href="Zero-Length.html#index-zero_002dlength-arrays">zero-length arrays</a>:</td><td>&nbsp;</td><td valign="top"><a href="Zero-Length.html">Zero Length</a></td></tr>
+<tr><td></td><td valign="top"><a href="Array-Example.html#index-zero_002dorigin-indexing">zero-origin indexing</a>:</td><td>&nbsp;</td><td valign="top"><a href="Array-Example.html">Array Example</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+</table>
+<table><tr><th valign="top">Jump to: &nbsp; </th><td><a class="summary-letter" href="#Concept-Index_cp_symbol-1"><b>#</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Concept-Index_cp_symbol-2"><b>?</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Concept-Index_cp_symbol-3"><b>\</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Concept-Index_cp_symbol-4"><b>_</b></a>
+ &nbsp; 
+<br>
+<a class="summary-letter" href="#Concept-Index_cp_letter-A"><b>A</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Concept-Index_cp_letter-B"><b>B</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Concept-Index_cp_letter-C"><b>C</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Concept-Index_cp_letter-D"><b>D</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Concept-Index_cp_letter-E"><b>E</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Concept-Index_cp_letter-F"><b>F</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Concept-Index_cp_letter-G"><b>G</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Concept-Index_cp_letter-H"><b>H</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Concept-Index_cp_letter-I"><b>I</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Concept-Index_cp_letter-K"><b>K</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Concept-Index_cp_letter-L"><b>L</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Concept-Index_cp_letter-M"><b>M</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Concept-Index_cp_letter-N"><b>N</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Concept-Index_cp_letter-O"><b>O</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Concept-Index_cp_letter-P"><b>P</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Concept-Index_cp_letter-Q"><b>Q</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Concept-Index_cp_letter-R"><b>R</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Concept-Index_cp_letter-S"><b>S</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Concept-Index_cp_letter-T"><b>T</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Concept-Index_cp_letter-U"><b>U</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Concept-Index_cp_letter-V"><b>V</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Concept-Index_cp_letter-W"><b>W</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Concept-Index_cp_letter-Z"><b>Z</b></a>
+ &nbsp; 
+</td></tr></table>
+
+<hr>
+<div class="header">
+<p>
+Previous: <a href="Symbol-Index.html" accesskey="p" rel="prev">Symbol Index</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Conditional-Branches.html
===================================================================
--- public/doc/gnu-c/Conditional-Branches.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Conditional-Branches.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,129 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Conditional Branches (GNU C Language Manual)</title>
+
+<meta name="description" content="Conditional Branches (GNU C Language Manual)">
+<meta name="keywords" content="Conditional Branches (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Conditional-Expression.html" rel="up" title="Conditional Expression">
+<link href="Comma-Operator.html" rel="next" title="Comma Operator">
+<link href="Conditional-Rules.html" rel="prev" title="Conditional Rules">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Conditional-Branches"></span><div class="header">
+<p>
+Previous: <a href="Conditional-Rules.html" accesskey="p" rel="prev">Conditional Rules</a>, Up: <a href="Conditional-Expression.html" accesskey="u" rel="up">Conditional Expression</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>
+</div>
+<hr>
+<span id="Conditional-Operator-Branches"></span><h4 class="subsection">8.4.2 Conditional Operator Branches</h4>
+<span id="index-branches-of-conditional-expression"></span>
+
+<p>We call <var>iftrue</var> and <var>iffalse</var> the <em>branches</em> of the
+conditional.
+</p>
+<p>The two branches should normally have the same type, but a few
+exceptions are allowed.  If they are both numeric types, the
+conditional converts both to their common type (see <a href="Common-Type.html">Common Type</a>).
+</p>
+<p>With pointers (see <a href="Pointers.html">Pointers</a>), the two values can be pointers to
+nearly compatible types (see <a href="Compatible-Types.html">Compatible Types</a>).  In this case, the
+result type is a similar pointer whose target type combines all the
+type qualifiers (see <a href="Type-Qualifiers.html">Type Qualifiers</a>) of both branches.
+</p>
+<p>If one branch has type <code>void *</code> and the other is a pointer to an
+object (not to a function), the conditional converts the <code>void *</code>
+branch to the type of the other.
+</p>
+<p>If one branch is an integer constant with value zero and the other is
+a pointer, the conditional converts zero to the pointer&rsquo;s type.
+</p>
+<p>In GNU C, you can omit <var>iftrue</var> in a conditional expression.  In
+that case, if <var>condition</var> is nonzero, its value becomes the value of
+the conditional expression, after conversion to the common type.
+Thus,
+</p>
+<div class="example">
+<pre class="example">x ? : y
+</pre></div>
+
+<p>has the value of <code>x</code> if that is nonzero; otherwise, the value of
+<code>y</code>.
+</p>
+<span id="index-side-effect-in-_003f_003a"></span>
+<span id="index-_003f_003a-side-effect"></span>
+<p>Omitting <var>iftrue</var> is useful when <var>condition</var> has side effects.
+In that case, writing that expression twice would carry out the side
+effects twice, but writing it once does them just once.  For example,
+if we suppose that the function <code>next_element</code> advances a pointer
+variable to point to the next element in a list and returns the new
+pointer,
+</p>
+<div class="example">
+<pre class="example">next_element () ? : default_pointer
+</pre></div>
+
+<p>is a way to advance the pointer and use its new value if it isn&rsquo;t
+null, but use <code>default_pointer</code> if that is null.  We must not do
+it this way,
+</p>
+<div class="example">
+<pre class="example">next_element () ? next_element () : default_pointer
+</pre></div>
+
+<p>because it would advance the pointer a second time.
+</p>
+<hr>
+<div class="header">
+<p>
+Previous: <a href="Conditional-Rules.html" accesskey="p" rel="prev">Conditional Rules</a>, Up: <a href="Conditional-Expression.html" accesskey="u" rel="up">Conditional Expression</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Conditional-Expression.html
===================================================================
--- public/doc/gnu-c/Conditional-Expression.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Conditional-Expression.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,85 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Conditional Expression (GNU C Language Manual)</title>
+
+<meta name="description" content="Conditional Expression (GNU C Language Manual)">
+<meta name="keywords" content="Conditional Expression (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Execution-Control-Expressions.html" rel="up" title="Execution Control Expressions">
+<link href="Conditional-Rules.html" rel="next" title="Conditional Rules">
+<link href="Logicals-and-Assignments.html" rel="prev" title="Logicals and Assignments">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Conditional-Expression"></span><div class="header">
+<p>
+Next: <a href="Comma-Operator.html" accesskey="n" rel="next">Comma Operator</a>, Previous: <a href="Logicals-and-Assignments.html" accesskey="p" rel="prev">Logicals and Assignments</a>, Up: <a href="Execution-Control-Expressions.html" accesskey="u" rel="up">Execution Control Expressions</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>
+</div>
+<hr>
+<span id="Conditional-Expression-1"></span><h3 class="section">8.4 Conditional Expression</h3>
+<span id="index-conditional-expression"></span>
+<span id="index-expression_002c-conditional"></span>
+
+<p>C has a conditional expression that selects one of two expressions
+to compute and get the value from.  It looks like this:
+</p>
+<div class="example">
+<pre class="example"><var>condition</var> ? <var>iftrue</var> : <var>iffalse</var>
+</pre></div>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Conditional-Rules.html" accesskey="1">Conditional Rules</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Rules for the conditional operator.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Conditional-Branches.html" accesskey="2">Conditional Branches</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">About the two branches in a conditional.
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Conditional-Rules.html
===================================================================
--- public/doc/gnu-c/Conditional-Rules.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Conditional-Rules.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,92 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Conditional Rules (GNU C Language Manual)</title>
+
+<meta name="description" content="Conditional Rules (GNU C Language Manual)">
+<meta name="keywords" content="Conditional Rules (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Conditional-Expression.html" rel="up" title="Conditional Expression">
+<link href="Conditional-Branches.html" rel="next" title="Conditional Branches">
+<link href="Conditional-Expression.html" rel="prev" title="Conditional Expression">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Conditional-Rules"></span><div class="header">
+<p>
+Next: <a href="Conditional-Branches.html" accesskey="n" rel="next">Conditional Branches</a>, Up: <a href="Conditional-Expression.html" accesskey="u" rel="up">Conditional Expression</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>
+</div>
+<hr>
+<span id="Rules-for-Conditional-Operator"></span><h4 class="subsection">8.4.1 Rules for Conditional Operator</h4>
+
+<p>The first operand, <var>condition</var>, should be a value that can be
+compared with zero&mdash;a number or a pointer.  If it is true (nonzero),
+then the conditional expression computes <var>iftrue</var> and its value
+becomes the value of the conditional expression.  Otherwise the
+conditional expression computes <var>iffalse</var> and its value becomes
+the value of the conditional expression.  The conditional expression
+always computes just one of <var>iftrue</var> and <var>iffalse</var>, never both
+of them.
+</p>
+<p>Here&rsquo;s an example: the absolute value of a number <code>x</code>
+can be written as <code>(x &gt;= 0 ? x : -x)</code>.
+</p>
+<p><strong>Warning:</strong> The conditional expression operators have rather low
+syntactic precedence.  Except when the conditional expression is used
+as an argument in a function call, write parentheses around it.  For
+clarity, always write parentheses around it if it extends across more
+than one line.
+</p>
+<p>Assignment operators and the comma operator (see <a href="Comma-Operator.html">Comma Operator</a>)
+have lower precedence than conditional expression operators, so write
+parentheses around those when they appear inside a conditional
+expression.  See <a href="Order-of-Execution.html">Order of Execution</a>.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Conditional-Syntax.html
===================================================================
--- public/doc/gnu-c/Conditional-Syntax.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Conditional-Syntax.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,86 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Conditional Syntax (GNU C Language Manual)</title>
+
+<meta name="description" content="Conditional Syntax (GNU C Language Manual)">
+<meta name="keywords" content="Conditional Syntax (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Conditionals.html" rel="up" title="Conditionals">
+<link href="ifdef.html" rel="next" title="ifdef">
+<link href="Conditional-Uses.html" rel="prev" title="Conditional Uses">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Conditional-Syntax"></span><div class="header">
+<p>
+Next: <a href="Deleted-Code.html" accesskey="n" rel="next">Deleted Code</a>, Previous: <a href="Conditional-Uses.html" accesskey="p" rel="prev">Conditional Uses</a>, Up: <a href="Conditionals.html" accesskey="u" rel="up">Conditionals</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>
+</div>
+<hr>
+<span id="Syntax-of-Preprocessing-Conditionals"></span><h4 class="subsection">26.6.2 Syntax of Preprocessing Conditionals</h4>
+
+<span id="index-_0023if"></span>
+<p>A preprocessing conditional begins with a <em>conditional
+directive</em>: <code>#if</code>, <code>#ifdef</code> or <code>#ifndef</code>.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="ifdef.html" accesskey="1">ifdef</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="if.html" accesskey="2">if</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="defined.html" accesskey="3">defined</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="else.html" accesskey="4">else</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="elif.html" accesskey="5">elif</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Conditional-Uses.html
===================================================================
--- public/doc/gnu-c/Conditional-Uses.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Conditional-Uses.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,94 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Conditional Uses (GNU C Language Manual)</title>
+
+<meta name="description" content="Conditional Uses (GNU C Language Manual)">
+<meta name="keywords" content="Conditional Uses (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Conditionals.html" rel="up" title="Conditionals">
+<link href="Conditional-Syntax.html" rel="next" title="Conditional Syntax">
+<link href="Conditionals.html" rel="prev" title="Conditionals">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Conditional-Uses"></span><div class="header">
+<p>
+Next: <a href="Conditional-Syntax.html" accesskey="n" rel="next">Conditional Syntax</a>, Up: <a href="Conditionals.html" accesskey="u" rel="up">Conditionals</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>
+</div>
+<hr>
+<span id="Uses-of-Conditional-Directives"></span><h4 class="subsection">26.6.1 Uses of Conditional Directives</h4>
+
+<p>There are three usual reasons to use a preprocessing conditional.
+</p>
+<ul>
+<li> A program may need to use different code depending on the machine or
+operating system it is to run on.  In some cases the code for one
+operating system may be erroneous on another operating system; for
+example, it might refer to data types or constants that do not exist on
+the other system.  When this happens, it is not enough to avoid
+executing the invalid code.  Its mere presence will cause the compiler
+to reject the program.  With a preprocessing conditional, the offending
+code can be effectively excised from the program when it is not valid.
+
+</li><li> You may want to be able to compile the same source file into two
+different programs.  One version might make frequent time-consuming
+consistency checks on its intermediate data, or print the values of
+those data for debugging, and the other not.
+
+</li><li> A conditional whose condition is always false is one way to exclude code
+from the program but keep it as a sort of comment for future reference.
+</li></ul>
+
+<p>Simple programs that do not need system-specific logic or complex
+debugging hooks generally will not need to use preprocessing
+conditionals.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Conditionals.html
===================================================================
--- public/doc/gnu-c/Conditionals.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Conditionals.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,111 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Conditionals (GNU C Language Manual)</title>
+
+<meta name="description" content="Conditionals (GNU C Language Manual)">
+<meta name="keywords" content="Conditionals (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Preprocessing.html" rel="up" title="Preprocessing">
+<link href="Conditional-Uses.html" rel="next" title="Conditional Uses">
+<link href="Argument-Prescan.html" rel="prev" title="Argument Prescan">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Conditionals"></span><div class="header">
+<p>
+Next: <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>
+</div>
+<hr>
+<span id="Conditionals-1"></span><h3 class="section">26.6 Conditionals</h3>
+<span id="index-conditionals"></span>
+
+<p>A <em>conditional</em> is a preprocessing directive that controls whether
+or not to include a chunk of code in the final token stream that is
+compiled.  Preprocessing conditionals can test arithmetic expressions,
+or whether a name is defined as a macro, or both together using the
+special <code>defined</code> operator.
+</p>
+<p>A preprocessing conditional in C resembles in some ways an <code>if</code>
+statement in C, but it is important to understand the difference between
+them.  The condition in an <code>if</code> statement is tested during the
+execution of your program.  Its purpose is to allow your program to
+behave differently from run to run, depending on the data it is
+operating on.  The condition in a preprocessing conditional directive is
+tested when your program is compiled.  Its purpose is to allow different
+code to be included in the program depending on the situation at the
+time of compilation.
+</p>
+<p>Sometimes this distinction makes no practical difference.  GCC and
+other modern compilers often
+do test <code>if</code> statements when a program is compiled, if their
+conditions are known not to vary at run time, and eliminate code that
+can never be executed.  If you can count on your compiler to do this,
+you may find that your program is more readable if you use <code>if</code>
+statements with constant conditions (perhaps determined by macros).  Of
+course, you can only use this to exclude code, not type definitions or
+other preprocessing directives, and you can only do it if the file
+remains syntactically valid when that code is not used.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<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">
+</td></tr>
+<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">
+</td></tr>
+<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">
+</td></tr>
+</table>
+
+<hr>
+<div class="header">
+<p>
+Next: <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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Constants.html
===================================================================
--- public/doc/gnu-c/Constants.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Constants.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,102 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Constants (GNU C Language Manual)</title>
+
+<meta name="description" content="Constants (GNU C Language Manual)">
+<meta name="keywords" content="Constants (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html" rel="up" title="Top">
+<link href="Integer-Constants.html" rel="next" title="Integer Constants">
+<link href="Type-Designators.html" rel="prev" title="Type Designators">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Constants"></span><div class="header">
+<p>
+Next: <a href="Type-Size.html" accesskey="n" rel="next">Type Size</a>, Previous: <a href="Primitive-Types.html" accesskey="p" rel="prev">Primitive Types</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</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>
+</div>
+<hr>
+<span id="Constants-1"></span><h2 class="chapter">12 Constants</h2>
+<span id="index-constants"></span>
+
+<p>A <em>constant</em> is an expression that stands for a specific value by
+explicitly representing the desired value.  C allows constants for
+numbers, characters, and strings.  We have already seen numeric and
+string constants in the examples.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Integer-Constants.html" accesskey="1">Integer Constants</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Literal integer values.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Integer-Const-Type.html" accesskey="2">Integer Const Type</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Types of literal integer values.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Floating-Constants.html" accesskey="3">Floating Constants</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Literal floating-point values.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Imaginary-Constants.html" accesskey="4">Imaginary Constants</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Literal imaginary number values.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Invalid-Numbers.html" accesskey="5">Invalid Numbers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Avoiding preprocessing number misconceptions.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Character-Constants.html" accesskey="6">Character Constants</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Literal character values.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="String-Constants.html" accesskey="7">String Constants</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Literal string values.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="UTF_002d8-String-Constants.html" accesskey="8">UTF-8 String Constants</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Literal UTF-8 string values.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Unicode-Character-Codes.html" accesskey="9">Unicode Character Codes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Unicode characters represented
+                                   in either UTF-16 or UTF-32.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Wide-Character-Constants.html">Wide Character Constants</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Literal characters values larger than 8 bits.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Wide-String-Constants.html">Wide String Constants</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Literal string values made up of
+                                   16- or 32-bit characters.
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Constructing-Array-Values.html
===================================================================
--- public/doc/gnu-c/Constructing-Array-Values.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Constructing-Array-Values.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,113 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Constructing Array Values (GNU C Language Manual)</title>
+
+<meta name="description" content="Constructing Array Values (GNU C Language Manual)">
+<meta name="keywords" content="Constructing Array Values (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Arrays.html" rel="up" title="Arrays">
+<link href="Arrays-of-Variable-Length.html" rel="next" title="Arrays of Variable Length">
+<link href="Multidimensional-Arrays.html" rel="prev" title="Multidimensional Arrays">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Constructing-Array-Values"></span><div class="header">
+<p>
+Next: <a href="Arrays-of-Variable-Length.html" accesskey="n" rel="next">Arrays of Variable Length</a>, Previous: <a href="Multidimensional-Arrays.html" accesskey="p" rel="prev">Multidimensional Arrays</a>, Up: <a href="Arrays.html" accesskey="u" rel="up">Arrays</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>
+</div>
+<hr>
+<span id="Constructing-Array-Values-1"></span><h3 class="section">16.8 Constructing Array Values</h3>
+<span id="index-constructing-array-values"></span>
+<span id="index-array-values_002c-constructing"></span>
+
+<p>You can construct an array from elements by writing them inside
+braces, and preceding all that with the array type&rsquo;s designator in
+parentheses.  There is no need to specify the array length, since the
+number of elements determines that.  The constructor looks like this:
+</p>
+<div class="example">
+<pre class="example">(<var>elttype</var>[]) { <var>elements</var> };
+</pre></div>
+
+<p>Here is an example, which constructs an array of string pointers:
+</p>
+<div class="example">
+<pre class="example">(char *[]) { &quot;x&quot;, &quot;y&quot;, &quot;z&quot; };
+</pre></div>
+
+<p>That&rsquo;s equivalent in effect to declaring an array with the same
+initializer, like this:
+</p>
+<div class="example">
+<pre class="example">char *array[] = { &quot;x&quot;, &quot;y&quot;, &quot;z&quot; };
+</pre></div>
+
+<p>and then using the array.
+</p>
+<p>If all the elements are simple constant expressions, or made up of
+such, then the compound literal can be coerced to a pointer to its
+zeroth element and used to initialize a file-scope variable
+(see <a href="File_002dScope-Variables.html">File-Scope Variables</a>), as shown here:
+</p>
+<div class="example">
+<pre class="example">char **foo = (char *[]) { &quot;x&quot;, &quot;y&quot;, &quot;z&quot; };
+</pre></div>
+
+<p>The data type of <code>foo</code> is <code>char **</code>, which is a pointer
+type, not an array type.  The declaration is equivalent to defining
+and then using an array-type variable:
+</p>
+<div class="example">
+<pre class="example">char *nameless_array[] = { &quot;x&quot;, &quot;y&quot;, &quot;z&quot; };
+char **foo = &amp;nameless_array[0];
+</pre></div>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Declaring-Arrays-and-Pointers.html
===================================================================
--- public/doc/gnu-c/Declaring-Arrays-and-Pointers.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Declaring-Arrays-and-Pointers.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,126 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Declaring Arrays and Pointers (GNU C Language Manual)</title>
+
+<meta name="description" content="Declaring Arrays and Pointers (GNU C Language Manual)">
+<meta name="keywords" content="Declaring Arrays and Pointers (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Variable-Declarations.html" rel="up" title="Variable Declarations">
+<link href="Combining-Variable-Declarations.html" rel="next" title="Combining Variable Declarations">
+<link href="Variable-Declarations.html" rel="prev" title="Variable Declarations">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Declaring-Arrays-and-Pointers"></span><div class="header">
+<p>
+Next: <a href="Combining-Variable-Declarations.html" accesskey="n" rel="next">Combining Variable Declarations</a>, Up: <a href="Variable-Declarations.html" accesskey="u" rel="up">Variable Declarations</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>
+</div>
+<hr>
+<span id="Declaring-Arrays-and-Pointers-1"></span><h4 class="subsection">20.1.1 Declaring Arrays and Pointers</h4>
+<span id="index-declaring-arrays-and-pointers"></span>
+<span id="index-array_002c-declaring-1"></span>
+<span id="index-pointers_002c-declaring"></span>
+
+<p>To declare a variable that is an array, write
+<code><var>variable</var>[<var>length</var>]</code> for <var>decorated-variable</var>:
+</p>
+<div class="example">
+<pre class="example">int foo[5];
+</pre></div>
+
+<p>To declare a variable that has a pointer type, write
+<code>*<var>variable</var></code> for <var>decorated-variable</var>:
+</p>
+<div class="example">
+<pre class="example">struct list_elt *foo;
+</pre></div>
+
+<p>These constructs nest.  For instance,
+</p>
+<div class="example">
+<pre class="example">int foo[3][5];
+</pre></div>
+
+<p>declares <code>foo</code> as an array of 3 arrays of 5 integers each,
+</p>
+<div class="example">
+<pre class="example">struct list_elt *foo[5];
+</pre></div>
+
+<p>declares <code>foo</code> as an array of 5 pointers to structures, and
+</p>
+<div class="example">
+<pre class="example">struct list_elt **foo;
+</pre></div>
+
+<p>declares <code>foo</code> as a pointer to a pointer to a structure.
+</p>
+<div class="example">
+<pre class="example">int **(*foo[30])(int, double);
+</pre></div>
+
+<p>declares <code>foo</code> as an array of 30 pointers to functions
+(see <a href="Function-Pointers.html">Function Pointers</a>), each of which must accept two arguments
+(one <code>int</code> and one <code>double</code>) and return type <code>int **</code>.
+</p>
+<div class="example">
+<pre class="example">void
+bar (int size)
+{
+  int foo[size];
+  <span class="roman">&hellip;</span>
+}
+</pre></div>
+
+<p>declares <code>foo</code> as an array of integers with a size specified at
+run time when the function <code>bar</code> is called.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Declaring-Function-Pointers.html
===================================================================
--- public/doc/gnu-c/Declaring-Function-Pointers.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Declaring-Function-Pointers.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,154 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Declaring Function Pointers (GNU C Language Manual)</title>
+
+<meta name="description" content="Declaring Function Pointers (GNU C Language Manual)">
+<meta name="keywords" content="Declaring Function Pointers (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Function-Pointers.html" rel="up" title="Function Pointers">
+<link href="Assigning-Function-Pointers.html" rel="next" title="Assigning Function Pointers">
+<link href="Function-Pointers.html" rel="prev" title="Function Pointers">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Declaring-Function-Pointers"></span><div class="header">
+<p>
+Next: <a href="Assigning-Function-Pointers.html" accesskey="n" rel="next">Assigning Function Pointers</a>, Up: <a href="Function-Pointers.html" accesskey="u" rel="up">Function Pointers</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>
+</div>
+<hr>
+<span id="Declaring-Function-Pointers-1"></span><h4 class="subsection">22.5.1 Declaring Function Pointers</h4>
+<span id="index-declaring-function-pointers"></span>
+<span id="index-function-pointers_002c-declaring"></span>
+
+<p>The declaration of a function pointer variable (or structure field)
+looks almost like a function declaration, except it has an additional
+&lsquo;<samp>*</samp>&rsquo; just before the variable name.  Proper nesting requires a
+pair of parentheses around the two of them.  For instance, <code>int
+(*a) ();</code> says, &ldquo;Declare <code>a</code> as a pointer such that <code>*a</code> is
+an <code>int</code>-returning function.&rdquo;
+</p>
+<p>Contrast these three declarations:
+</p>
+<div class="example">
+<pre class="example">/* <span class="roman">Declare a function returning <code>char *</code>.</span>  */
+char *a (char *);
+/* <span class="roman">Declare a pointer to a function returning <code>char</code>.</span>  */
+char (*a) (char *);
+/* <span class="roman">Declare a pointer to a function returning <code>char *</code>.</span>  */
+char *(*a) (char *);
+</pre></div>
+
+<p>The possible argument types of the function pointed to are the same
+as in a function declaration.  You can write a prototype
+that specifies all the argument types:
+</p>
+<div class="example">
+<pre class="example"><var>rettype</var> (*<var>function</var>) (<var>arguments</var><span class="roman">&hellip;</span>);
+</pre></div>
+
+<p>or one that specifies some and leaves the rest unspecified:
+</p>
+<div class="example">
+<pre class="example"><var>rettype</var> (*<var>function</var>) (<var>arguments</var><span class="roman">&hellip;</span>, ...);
+</pre></div>
+
+<p>or one that says there are no arguments:
+</p>
+<div class="example">
+<pre class="example"><var>rettype</var> (*<var>function</var>) (void);
+</pre></div>
+
+<p>You can also write a non-prototype declaration that says
+nothing about the argument types:
+</p>
+<div class="example">
+<pre class="example"><var>rettype</var> (*<var>function</var>) ();
+</pre></div>
+
+<p>For example, here&rsquo;s a declaration for a variable that should
+point to some arithmetic function that operates on two <code>double</code>s:
+</p>
+<div class="example">
+<pre class="example">double (*binary_op) (double, double);
+</pre></div>
+
+<p>Structure fields, union alternatives, and array elements can be
+function pointers; so can parameter variables.  The function pointer
+declaration construct can also be combined with other operators
+allowed in declarations.  For instance,
+</p>
+<div class="example">
+<pre class="example">int **(*foo)();
+</pre></div>
+
+<p>declares <code>foo</code> as a pointer to a function that returns
+type <code>int **</code>, and
+</p>
+<div class="example">
+<pre class="example">int **(*foo[30])();
+</pre></div>
+
+<p>declares <code>foo</code> as an array of 30 pointers to functions that
+return type <code>int **</code>.
+</p>
+<div class="example">
+<pre class="example">int **(**foo)();
+</pre></div>
+
+<p>declares <code>foo</code> as a pointer to a pointer to a function that
+returns type <code>int **</code>.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Assigning-Function-Pointers.html" accesskey="n" rel="next">Assigning Function Pointers</a>, Up: <a href="Function-Pointers.html" accesskey="u" rel="up">Function Pointers</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Declaring-an-Array.html
===================================================================
--- public/doc/gnu-c/Declaring-an-Array.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Declaring-an-Array.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,136 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Declaring an Array (GNU C Language Manual)</title>
+
+<meta name="description" content="Declaring an Array (GNU C Language Manual)">
+<meta name="keywords" content="Declaring an Array (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Arrays.html" rel="up" title="Arrays">
+<link href="Strings.html" rel="next" title="Strings">
+<link href="Accessing-Array-Elements.html" rel="prev" title="Accessing Array Elements">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Declaring-an-Array"></span><div class="header">
+<p>
+Next: <a href="Strings.html" accesskey="n" rel="next">Strings</a>, Previous: <a href="Accessing-Array-Elements.html" accesskey="p" rel="prev">Accessing Array Elements</a>, Up: <a href="Arrays.html" accesskey="u" rel="up">Arrays</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>
+</div>
+<hr>
+<span id="Declaring-an-Array-1"></span><h3 class="section">16.2 Declaring an Array</h3>
+<span id="index-declaring-an-array"></span>
+<span id="index-array_002c-declaring"></span>
+
+<p>To make an array declaration, write <code>[<var>length</var>]</code> after the
+name being declared.  This construct is valid in the declaration of a
+variable, a function parameter, a function value type (the value can&rsquo;t
+be an array, but it can be a pointer to one), a structure field, or a
+union alternative.
+</p>
+<p>The surrounding declaration specifies the element type of the array;
+that can be any type of data, but not <code>void</code> or a function type.
+For instance,
+</p>
+<div class="example">
+<pre class="example">double a[5];
+</pre></div>
+
+<p>declares <code>a</code> as an array of 5 <code>double</code>s.
+</p>
+<div class="example">
+<pre class="example">struct foo bstruct[length];
+</pre></div>
+
+<p>declares <code>bstruct</code> as an array of <code>length</code> objects of type
+<code>struct foo</code>.  A variable array size like this is allowed when
+the array is not file-scope.
+</p>
+<p>Other declaration constructs can nest within the array declaration
+construct.  For instance:
+</p>
+<div class="example">
+<pre class="example">struct foo *b[length];
+</pre></div>
+
+<p>declares <code>b</code> as an array of <code>length</code> pointers to
+<code>struct foo</code>.  This shows that the length need not be a constant
+(see <a href="Arrays-of-Variable-Length.html">Arrays of Variable Length</a>).
+</p>
+<div class="example">
+<pre class="example">double (*c)[5];
+</pre></div>
+
+<p>declares <code>c</code> as a pointer to an array of 5 <code>double</code>s, and
+</p>
+<div class="example">
+<pre class="example">char *(*f (int))[5];
+</pre></div>
+
+<p>declares <code>f</code> as a function taking an <code>int</code> argument and
+returning a pointer to an array of 5 strings (pointers to
+<code>char</code>s).
+</p>
+<div class="example">
+<pre class="example">double aa[5][10];
+</pre></div>
+
+<p>declares <code>aa</code> as an array of 5 elements, each of which is an
+array of 10 <code>double</code>s.  This shows how to declare a
+multidimensional array in C (see <a href="Multidimensional-Arrays.html">Multidimensional Arrays</a>).
+</p>
+<p>All these declarations specify the array&rsquo;s length, which is needed in
+these cases in order to allocate storage for the array.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Strings.html" accesskey="n" rel="next">Strings</a>, Previous: <a href="Accessing-Array-Elements.html" accesskey="p" rel="prev">Accessing Array Elements</a>, Up: <a href="Arrays.html" accesskey="u" rel="up">Arrays</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Defining-Typedef-Names.html
===================================================================
--- public/doc/gnu-c/Defining-Typedef-Names.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Defining-Typedef-Names.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,166 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Defining Typedef Names (GNU C Language Manual)</title>
+
+<meta name="description" content="Defining Typedef Names (GNU C Language Manual)">
+<meta name="keywords" content="Defining Typedef Names (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html" rel="up" title="Top">
+<link href="Statements.html" rel="next" title="Statements">
+<link href="Enumeration-Types.html" rel="prev" title="Enumeration Types">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Defining-Typedef-Names"></span><div class="header">
+<p>
+Next: <a href="Statements.html" accesskey="n" rel="next">Statements</a>, Previous: <a href="Enumeration-Types.html" accesskey="p" rel="prev">Enumeration Types</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</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>
+</div>
+<hr>
+<span id="Defining-Typedef-Names-1"></span><h2 class="chapter">18 Defining Typedef Names</h2>
+<span id="index-typedef-names"></span>
+<span id="index-typedef"></span>
+
+<p>You can define a data type keyword as an alias for any type, and then
+use the alias syntactically like a built-in type keyword such as
+<code>int</code>.  You do this using <code>typedef</code>, so these aliases are
+also called <em>typedef names</em>.
+</p>
+<p><code>typedef</code> is followed by text that looks just like a variable
+declaration, but instead of declaring variables it defines data type
+keywords.
+</p>
+<p>Here&rsquo;s how to define <code>fooptr</code> as a typedef alias for the type
+<code>struct foo *</code>, then declare <code>x</code> and <code>y</code> as variables
+with that type:
+</p>
+<div class="example">
+<pre class="example">typedef struct foo *fooptr;
+
+fooptr x, y;
+</pre></div>
+
+<p>That declaration is equivalent to the following one:
+</p>
+<div class="example">
+<pre class="example">struct foo *x, *y;
+</pre></div>
+
+<p>You can define a typedef alias for any type.  For instance, this makes
+<code>frobcount</code> an alias for type <code>int</code>:
+</p>
+<div class="example">
+<pre class="example">typedef int frobcount;
+</pre></div>
+
+<p>This doesn&rsquo;t define a new type distinct from <code>int</code>.  Rather,
+<code>frobcount</code> is another name for the type <code>int</code>.  Once the
+variable is declared, it makes no difference which name the
+declaration used.
+</p>
+<p>There is a syntactic difference, however, between <code>frobcount</code> and
+<code>int</code>: A typedef name cannot be used with
+<code>signed</code>, <code>unsigned</code>, <code>long</code> or <code>short</code>.  It has
+to specify the type all by itself.  So you can&rsquo;t write this:
+</p>
+<div class="example">
+<pre class="example">unsigned frobcount f1;  /* <span class="roman">Error!</span> */
+</pre></div>
+
+<p>But you can write this:
+</p>
+<div class="example">
+<pre class="example">typedef unsigned int unsigned_frobcount;
+
+unsigned_frobcount f1;
+</pre></div>
+
+<p>In other words, a typedef name is not an alias for <em>a keyword</em>
+such as <code>int</code>.  It stands for a <em>type</em>, and that could be
+the type <code>int</code>.
+</p>
+<p>Typedef names are in the same namespace as functions and variables, so
+you can&rsquo;t use the same name for a typedef and a function, or a typedef
+and a variable.  When a typedef is declared inside a code block, it is
+in scope only in that block.
+</p>
+<p><strong>Warning:</strong> Avoid defining typedef names that end in &lsquo;<samp>_t</samp>&rsquo;,
+because many of these have standard meanings.
+</p>
+<p>You can redefine a typedef name to the exact same type as its first
+definition, but you cannot redefine a typedef name to a
+different type, even if the two types are compatible. For example, this
+is valid:
+</p>
+<div class="example">
+<pre class="example">typedef int frobcount;
+typedef int frotzcount;
+typedef frotzcount frobcount;
+typedef frobcount frotzcount;
+</pre></div>
+
+<p>because each typedef name is always defined with the same type
+(<code>int</code>), but this is not valid:
+</p>
+<div class="example">
+<pre class="example">enum foo {f1, f2, f3};
+typedef enum foo frobcount;
+typedef int frobcount;
+</pre></div>
+
+<p>Even though the type <code>enum foo</code> is compatible with <code>int</code>,
+they are not the <em>same</em> type.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Statements.html" accesskey="n" rel="next">Statements</a>, Previous: <a href="Enumeration-Types.html" accesskey="p" rel="prev">Enumeration Types</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Deleted-Code.html
===================================================================
--- public/doc/gnu-c/Deleted-Code.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Deleted-Code.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,93 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Deleted Code (GNU C Language Manual)</title>
+
+<meta name="description" content="Deleted Code (GNU C Language Manual)">
+<meta name="keywords" content="Deleted Code (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Conditionals.html" rel="up" title="Conditionals">
+<link href="Diagnostics.html" rel="next" title="Diagnostics">
+<link href="elif.html" rel="prev" title="elif">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Deleted-Code"></span><div class="header">
+<p>
+Previous: <a href="Conditional-Syntax.html" accesskey="p" rel="prev">Conditional Syntax</a>, Up: <a href="Conditionals.html" accesskey="u" rel="up">Conditionals</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>
+</div>
+<hr>
+<span id="Deleted-Code-1"></span><h4 class="subsection">26.6.3 Deleted Code</h4>
+<span id="index-commenting-out-code"></span>
+
+<p>If you replace or delete a part of the program but want to keep the
+old code in the file for future reference, commenting it out is not so
+straightforward in C.  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>
+<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 <code>#if</code> and <code>#endif</code>).
+</p>
+<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>
+<p>Do not use <code>#if 0</code> around text that is 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&rsquo;t confuse
+&lsquo;<samp>/*</samp>&rsquo;.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Designated-Inits.html
===================================================================
--- public/doc/gnu-c/Designated-Inits.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Designated-Inits.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,180 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Designated Inits (GNU C Language Manual)</title>
+
+<meta name="description" content="Designated Inits (GNU C Language Manual)">
+<meta name="keywords" content="Designated Inits (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Variables.html" rel="up" title="Variables">
+<link href="Auto-Type.html" rel="next" title="Auto Type">
+<link href="Initializers.html" rel="prev" title="Initializers">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Designated-Inits"></span><div class="header">
+<p>
+Next: <a href="Auto-Type.html" accesskey="n" rel="next">Auto Type</a>, Previous: <a href="Initializers.html" accesskey="p" rel="prev">Initializers</a>, Up: <a href="Variables.html" accesskey="u" rel="up">Variables</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>
+</div>
+<hr>
+<span id="Designated-Initializers"></span><h3 class="section">20.3 Designated Initializers</h3>
+<span id="index-initializers-with-labeled-elements"></span>
+<span id="index-labeled-elements-in-initializers"></span>
+<span id="index-case-labels-in-initializers"></span>
+<span id="index-designated-initializers"></span>
+
+<p>In a complex structure or long array, it&rsquo;s useful to indicate
+which field or element we are initializing.
+</p>
+<p>To designate specific array elements during initialization, include
+the array index in brackets, and an assignment operator, for each
+element:
+</p>
+<div class="example">
+<pre class="example">int foo[10] = { [3] = 42, [7] = 58 };
+</pre></div>
+
+<p>This does the same thing as:
+</p>
+<div class="example">
+<pre class="example">int foo[10] = { 0, 0, 0, 42, 0, 0, 0, 58, 0, 0 };
+</pre></div>
+
+<p>The array initialization can include non-designated element values
+alongside designated indices; these follow the expected ordering
+of the array initialization, so that
+</p>
+<div class="example">
+<pre class="example">int foo[10] = { [3] = 42, 43, 44, [7] = 58 };
+</pre></div>
+
+<p>does the same thing as:
+</p>
+<div class="example">
+<pre class="example">int foo[10] = { 0, 0, 0, 42, 43, 44, 0, 58, 0, 0 };
+</pre></div>
+
+<p>Note that you can only use constant expressions as array index values,
+not variables.
+</p>
+<p>If you need to initialize a subsequence of sequential array elements to
+the same value, you can specify a range:
+</p>
+<div class="example">
+<pre class="example">int foo[100] = { [0 ... 19] = 42, [20 ... 99] = 43 };
+</pre></div>
+
+<p>Using a range this way is a GNU C extension.
+</p>
+<p>When subsequence ranges overlap, each element is initialized by the
+last specification that applies to it.  Thus, this initialization is
+equivalent to the previous one.
+</p>
+<div class="example">
+<pre class="example">int foo[100] = { [0 ... 99] = 43, [0 ... 19] = 42 };
+</pre></div>
+
+<p>as the second overrides the first for elements 0 through 19.
+</p>
+<p>The value used to initialize a range of elements is evaluated only
+once, for the first element in the range.  So for example, this code
+</p>
+<div class="example">
+<pre class="example">int random_values[100]
+  = { [0 ... 99] = get_random_number() };
+</pre></div>
+
+<p>would initialize all 100 elements of the array <code>random_values</code> to
+the same value&mdash;probably not what is intended.
+</p>
+<p>Similarly, you can initialize specific fields of a structure variable
+by specifying the field name prefixed with a dot:
+</p>
+<div class="example">
+<pre class="example">struct point { int x; int y; };
+
+struct point foo = { .y = 42; };
+</pre></div>
+
+<p>The same syntax works for union variables as well:
+</p>
+<div class="example">
+<pre class="example">union int_double { int i; double d; };
+
+union int_double foo = { .d = 34 };
+</pre></div>
+
+<p>This casts the integer value 34 to a double and stores it
+in the union variable <code>foo</code>.
+</p>
+<p>You can designate both array elements and structure elements in
+the same initialization; for example, here&rsquo;s an array of point
+structures:
+</p>
+<div class="example">
+<pre class="example">struct point point_array[10] = { [4].y = 32, [6].y = 39 };
+</pre></div>
+
+<p>Along with the capability to specify particular array and structure
+elements to initialize comes the possibility of initializing the same
+element more than once:
+</p>
+<div class="example">
+<pre class="example">int foo[10] = { [4] = 42, [4] = 98 };
+</pre></div>
+
+<p>In such a case, the last initialization value is retained.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Auto-Type.html" accesskey="n" rel="next">Auto Type</a>, Previous: <a href="Initializers.html" accesskey="p" rel="prev">Initializers</a>, Up: <a href="Variables.html" accesskey="u" rel="up">Variables</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Diagnostics.html
===================================================================
--- public/doc/gnu-c/Diagnostics.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Diagnostics.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,101 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Diagnostics (GNU C Language Manual)</title>
+
+<meta name="description" content="Diagnostics (GNU C Language Manual)">
+<meta name="keywords" content="Diagnostics (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Preprocessing.html" rel="up" title="Preprocessing">
+<link href="Line-Control.html" rel="next" title="Line Control">
+<link href="Deleted-Code.html" rel="prev" title="Deleted Code">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Diagnostics"></span><div class="header">
+<p>
+Next: <a href="Line-Control.html" accesskey="n" rel="next">Line Control</a>, Previous: <a href="Conditionals.html" accesskey="p" rel="prev">Conditionals</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>
+</div>
+<hr>
+<span id="Diagnostics-1"></span><h3 class="section">26.7 Diagnostics</h3>
+<span id="index-diagnostic"></span>
+<span id="index-reporting-errors"></span>
+<span id="index-reporting-warnings"></span>
+
+<span id="index-_0023error"></span>
+<p>The directive <code>#error</code> reports a fatal error.  The
+tokens forming the rest of the line following <code>#error</code> are used
+as the error message.
+</p>
+<p>The usual place to use <code>#error</code> is inside a conditional that
+detects a combination of parameters that you know the program does not
+properly support.  For example,
+</p>
+<div class="example">
+<pre class="example">#if !defined(UNALIGNED_INT_ASM_OP) &amp;&amp; defined(DWARF2_DEBUGGING_INFO)
+#error &quot;DWARF2_DEBUGGING_INFO requires UNALIGNED_INT_ASM_OP.&quot;
+#endif
+</pre></div>
+
+<span id="index-_0023warning"></span>
+<p>The directive <code>#warning</code> is like <code>#error</code>, but it reports a
+warning instead of an error.  The tokens following <code>#warning</code> are
+used as the warning message.
+</p>
+<p>You might use <code>#warning</code> in obsolete header files, with a message
+saying which header file to use instead.
+</p>
+<p>Neither <code>#error</code> nor <code>#warning</code> macro-expands its argument.
+Internal whitespace sequences are each replaced with a single space.
+The line must consist of complete tokens.  It is wisest to make the
+argument of these directives be a single string constant; this avoids
+problems with apostrophes and the like.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Digraphs.html
===================================================================
--- public/doc/gnu-c/Digraphs.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Digraphs.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,95 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Digraphs (GNU C Language Manual)</title>
+
+<meta name="description" content="Digraphs (GNU C Language Manual)">
+<meta name="keywords" content="Digraphs (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html" rel="up" title="Top">
+<link href="Attributes.html" rel="next" title="Attributes">
+<link href="Aliasing-Type-Rules.html" rel="prev" title="Aliasing Type Rules">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Digraphs"></span><div class="header">
+<p>
+Next: <a href="Attributes.html" accesskey="n" rel="next">Attributes</a>, Previous: <a href="Aliasing.html" accesskey="p" rel="prev">Aliasing</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</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>
+</div>
+<hr>
+<span id="Digraphs-1"></span><h2 class="appendix">Appendix C Digraphs</h2>
+<span id="index-digraphs"></span>
+
+<p>C accepts aliases for certain characters.  Apparently in the 1990s
+some computer systems had trouble inputting these characters, or
+trouble displaying them.  These digraphs almost never appear in C
+programs nowadays, but we mention them for completeness.
+</p>
+<dl compact="compact">
+<dt>&lsquo;<samp>&lt;:</samp>&rsquo;</dt>
+<dd><p>An alias for &lsquo;<samp>[</samp>&rsquo;.
+</p></dd>
+<dt>&lsquo;<samp>:&gt;</samp>&rsquo;</dt>
+<dd><p>An alias for &lsquo;<samp>]</samp>&rsquo;.
+</p></dd>
+<dt>&lsquo;<samp>&lt;%</samp>&rsquo;</dt>
+<dd><p>An alias for &lsquo;<samp>{</samp>&rsquo;.
+</p></dd>
+<dt>&lsquo;<samp>%&gt;</samp>&rsquo;</dt>
+<dd><p>An alias for &lsquo;<samp>}</samp>&rsquo;.
+</p></dd>
+<dt>&lsquo;<samp>%:</samp>&rsquo;</dt>
+<dd><p>An alias for &lsquo;<samp>#</samp>&rsquo;,
+used for preprocessing directives (see <a href="Directives.html">Directives</a>) and
+macros (see <a href="Macros.html">Macros</a>).
+</p></dd>
+</dl>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Directing-Compilation.html
===================================================================
--- public/doc/gnu-c/Directing-Compilation.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Directing-Compilation.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,80 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Directing Compilation (GNU C Language Manual)</title>
+
+<meta name="description" content="Directing Compilation (GNU C Language Manual)">
+<meta name="keywords" content="Directing Compilation (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html" rel="up" title="Top">
+<link href="Pragmas.html" rel="next" title="Pragmas">
+<link href="Compilation.html" rel="prev" title="Compilation">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Directing-Compilation"></span><div class="header">
+<p>
+Next: <a href="Type-Alignment.html" accesskey="n" rel="next">Type Alignment</a>, Previous: <a href="Compilation.html" accesskey="p" rel="prev">Compilation</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</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>
+</div>
+<hr>
+<span id="Directing-Compilation-1"></span><h2 class="chapter">30 Directing Compilation</h2>
+
+<p>This chapter describes C constructs that don&rsquo;t alter the program&rsquo;s
+meaning <em>as such</em>, but rather direct the compiler how to treat
+some aspects of the program.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Pragmas.html" accesskey="1">Pragmas</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Controling compilation of some constructs.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Static-Assertions.html" accesskey="2">Static Assertions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Compile-time tests for conditions.
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Directives-Within-Macro-Arguments.html
===================================================================
--- public/doc/gnu-c/Directives-Within-Macro-Arguments.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Directives-Within-Macro-Arguments.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,98 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Directives Within Macro Arguments (GNU C Language Manual)</title>
+
+<meta name="description" content="Directives Within Macro Arguments (GNU C Language Manual)">
+<meta name="keywords" content="Directives Within Macro Arguments (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Macros.html" rel="up" title="Macros">
+<link href="Macro-Pitfalls.html" rel="next" title="Macro Pitfalls">
+<link href="Undefining-and-Redefining-Macros.html" rel="prev" title="Undefining and Redefining Macros">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Directives-Within-Macro-Arguments"></span><div class="header">
+<p>
+Next: <a href="Macro-Pitfalls.html" accesskey="n" rel="next">Macro Pitfalls</a>, Previous: <a href="Undefining-and-Redefining-Macros.html" accesskey="p" rel="prev">Undefining and Redefining Macros</a>, Up: <a href="Macros.html" accesskey="u" rel="up">Macros</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>
+</div>
+<hr>
+<span id="Directives-Within-Macro-Arguments-1"></span><h4 class="subsection">26.5.9 Directives Within Macro Arguments</h4>
+<span id="index-macro-arguments-and-directives"></span>
+
+<p>GNU C permits and handles preprocessing directives in the text provided
+as arguments for a macro.  That case is undefined in the C standard.
+but in GNU C&nbsp;conditional directives in macro arguments
+are clear and valid.
+</p>
+<p>A paradoxical case is to redefine a macro within the call to that same
+macro.  What happens is, the new definition takes effect in time for
+pre-expansion of <em>all</em> the arguments, then the original
+definition is expanded to replace the call.  Here is a pathological
+example:
+</p>
+<div class="example">
+<pre class="example">#define f(x) x x
+f (first f second
+#undef f
+#define f 2
+f)
+</pre></div>
+
+<p>which expands to
+</p>
+<div class="example">
+<pre class="example">first 2 second 2 first 2 second 2
+</pre></div>
+
+<p>with the semantics described above.  We suggest you avoid writing code
+which does this sort of thing.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Directives.html
===================================================================
--- public/doc/gnu-c/Directives.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Directives.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,107 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Directives (GNU C Language Manual)</title>
+
+<meta name="description" content="Directives (GNU C Language Manual)">
+<meta name="keywords" content="Directives (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Preprocessing.html" rel="up" title="Preprocessing">
+<link href="Preprocessing-Tokens.html" rel="next" title="Preprocessing Tokens">
+<link href="Preproc-Overview.html" rel="prev" title="Preproc Overview">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Directives"></span><div class="header">
+<p>
+Next: <a href="Preprocessing-Tokens.html" accesskey="n" rel="next">Preprocessing Tokens</a>, Previous: <a href="Preproc-Overview.html" accesskey="p" rel="prev">Preproc Overview</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>
+</div>
+<hr>
+<span id="Directives-1"></span><h3 class="section">26.2 Directives</h3>
+<span id="index-directives"></span>
+<span id="index-preprocessing-directives"></span>
+<span id="index-directive-line"></span>
+<span id="index-directive-name"></span>
+
+<p><em>Preprocessing directives</em> are lines in the program that start
+with &lsquo;<samp>#</samp>&rsquo;.  Whitespace is allowed before and after the &lsquo;<samp>#</samp>&rsquo;.
+The &lsquo;<samp>#</samp>&rsquo; is followed by an identifier, the <em>directive name</em>.
+It specifies the operation to perform.  Here are a couple of examples:
+</p>
+<div class="example">
+<pre class="example">#define LIMIT 51
+  #   undef LIMIT
+# error You screwed up!
+</pre></div>
+
+<p>We usually refer to a directive as <code>#<var>name</var></code> where <var>name</var>
+is the directive name.  For example, <code>#define</code> means the
+directive that defines a macro.
+</p>
+<p>The &lsquo;<samp>#</samp>&rsquo; that begins a directive cannot come from a macro
+expansion.  Also, the directive name is not macro expanded.  Thus, if
+<code>foo</code> is defined as a macro expanding to <code>define</code>, that does
+not make <code>#foo</code> a valid preprocessing directive.
+</p>
+<p>The set of valid directive names is fixed.  Programs cannot define new
+preprocessing directives.
+</p>
+<p>Some directives require arguments; these make up the rest of the
+directive line and must be separated from the directive name by
+whitespace.  For example, <code>#define</code> must be followed by a macro
+name and the intended expansion of the macro.
+</p>
+<p>A preprocessing directive cannot cover more than one line.  The line
+can, however, be continued with backslash-newline, or by a
+&lsquo;<samp>/*<span class="roman">&hellip;</span>*/</samp>&rsquo;-style comment that extends past the end of the
+line.  These will be replaced (by nothing, or by whitespace) before
+the directive is processed.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Division-and-Remainder.html
===================================================================
--- public/doc/gnu-c/Division-and-Remainder.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Division-and-Remainder.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,150 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Division and Remainder (GNU C Language Manual)</title>
+
+<meta name="description" content="Division and Remainder (GNU C Language Manual)">
+<meta name="keywords" content="Division and Remainder (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Arithmetic.html" rel="up" title="Arithmetic">
+<link href="Numeric-Comparisons.html" rel="next" title="Numeric Comparisons">
+<link href="Mixed-Mode.html" rel="prev" title="Mixed Mode">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Division-and-Remainder"></span><div class="header">
+<p>
+Next: <a href="Numeric-Comparisons.html" accesskey="n" rel="next">Numeric Comparisons</a>, Previous: <a href="Mixed-Mode.html" accesskey="p" rel="prev">Mixed Mode</a>, Up: <a href="Arithmetic.html" accesskey="u" rel="up">Arithmetic</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>
+</div>
+<hr>
+<span id="Division-and-Remainder-1"></span><h3 class="section">6.5 Division and Remainder</h3>
+<span id="index-remainder-operator"></span>
+<span id="index-modulus"></span>
+<span id="index-operator_002c-remainder"></span>
+
+<p>Division of integers in C rounds the result to an integer.  The result
+is always rounded towards zero.
+</p>
+<div class="example">
+<pre class="example"> 16 / 3  &rArr; 5
+-16 / 3  &rArr; -5
+ 16 / -3 &rArr; -5
+-16 / -3 &rArr; 5
+</pre></div>
+
+<p>To get the corresponding remainder, use the &lsquo;<samp>%</samp>&rsquo; operator:
+</p>
+<div class="example">
+<pre class="example"> 16 % 3  &rArr; 1
+-16 % 3  &rArr; -1
+ 16 % -3 &rArr; 1
+-16 % -3 &rArr; -1
+</pre></div>
+
+<p>&lsquo;<samp>%</samp>&rsquo; has the same operator precedence as &lsquo;<samp>/</samp>&rsquo; and &lsquo;<samp>*</samp>&rsquo;.
+</p>
+<p>From the rounded quotient and the remainder, you can reconstruct
+the dividend, like this:
+</p>
+<div class="example">
+<pre class="example">int
+original_dividend (int divisor, int quotient, int remainder)
+{
+  return divisor * quotient + remainder;
+}
+</pre></div>
+
+<p>To do unrounded division, use floating point.  If only one operand is
+floating point, &lsquo;<samp>/</samp>&rsquo; converts the other operand to floating
+point.
+</p>
+<div class="example">
+<pre class="example">16.0 / 3   &rArr; 5.333333333333333
+16   / 3.0 &rArr; 5.333333333333333
+16.0 / 3.0 &rArr; 5.333333333333333
+16   / 3   &rArr; 5
+</pre></div>
+
+<p>The remainder operator &lsquo;<samp>%</samp>&rsquo; is not allowed for floating-point
+operands, because it is not needed.  The concept of remainder makes
+sense for integers because the result of division of integers has to
+be an integer.  For floating point, the result of division is a
+floating-point number, in other words a fraction, which will differ
+from the exact result only by a very small amount.
+</p>
+<p>There are functions in the standard C library to calculate remainders
+from integral-values division of floating-point numbers.
+See <a href="https://www.gnu.org/software/libc/manual/html_node/Remainder-Functions.html#Remainder-Functions">The GNU C Library</a> in <cite>The GNU C Library
+Reference Manual</cite>.
+</p>
+<p>Integer division overflows in one specific case: dividing the smallest
+negative value for the data type (see <a href="Maximum-and-Minimum-Values.html">Maximum and Minimum Values</a>)
+by -1.  That&rsquo;s because the correct result, which is the
+corresponding positive number, does not fit (see <a href="Integer-Overflow.html">Integer Overflow</a>)
+in the same number of bits.  On some computers now in use, this always
+causes a signal <code>SIGFPE</code> (see <a href="Signals.html">Signals</a>), the same behavior
+that the option <samp>-ftrapv</samp> specifies (see <a href="Signed-Overflow.html">Signed Overflow</a>).
+</p>
+<p>Division by zero leads to unpredictable results&mdash;depending on the
+type of computer, it might cause a signal <code>SIGFPE</code>, or it might
+produce a numeric result.
+</p>
+<span id="index-division-by-zero"></span>
+<span id="index-zero_002c-division-by"></span>
+<p><strong>Watch out:</strong> Make sure the program does not divide by zero.  If
+you can&rsquo;t prove that the divisor is not zero, test whether it is zero,
+and skip the division if so.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Numeric-Comparisons.html" accesskey="n" rel="next">Numeric Comparisons</a>, Previous: <a href="Mixed-Mode.html" accesskey="p" rel="prev">Mixed Mode</a>, Up: <a href="Arithmetic.html" accesskey="u" rel="up">Arithmetic</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Duffs-Device.html
===================================================================
--- public/doc/gnu-c/Duffs-Device.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Duffs-Device.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,113 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Duffs Device (GNU C Language Manual)</title>
+
+<meta name="description" content="Duffs Device (GNU C Language Manual)">
+<meta name="keywords" content="Duffs Device (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Statements.html" rel="up" title="Statements">
+<link href="Case-Ranges.html" rel="next" title="Case Ranges">
+<link href="switch-Example.html" rel="prev" title="switch Example">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Duffs-Device"></span><div class="header">
+<p>
+Next: <a href="Case-Ranges.html" accesskey="n" rel="next">Case Ranges</a>, Previous: <a href="switch-Example.html" accesskey="p" rel="prev">switch Example</a>, Up: <a href="Statements.html" accesskey="u" rel="up">Statements</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>
+</div>
+<hr>
+<span id="Duff_0027s-Device"></span><h3 class="section">19.9 Duff&rsquo;s Device</h3>
+<span id="index-Duff_0027s-device"></span>
+
+<p>The cases in a <code>switch</code> statement can be inside other control
+constructs.  For instance, we can use a technique known as <em>Duff&rsquo;s
+device</em> to optimize this simple function,
+</p>
+<div class="example">
+<pre class="example">void
+copy (char *to, char *from, int count)
+{
+  while (count &gt; 0)
+    *to++ = *from++, count--;
+}
+</pre></div>
+
+<p>which copies memory starting at <var>from</var> to memory starting at
+<var>to</var>.
+</p>
+<p>Duff&rsquo;s device involves unrolling the loop so that it copies
+several characters each time around, and using a <code>switch</code> statement
+to enter the loop body at the proper point:
+</p>
+<div class="example">
+<pre class="example">void
+copy (char *to, char *from, int count)
+{
+  if (count &lt;= 0)
+    return;
+  int n = (count + 7) / 8;
+  switch (count % 8)
+    {
+      do {
+        case 0: *to++ = *from++;
+        case 7: *to++ = *from++;
+        case 6: *to++ = *from++;
+        case 5: *to++ = *from++;
+        case 4: *to++ = *from++;
+        case 3: *to++ = *from++;
+        case 2: *to++ = *from++;
+        case 1: *to++ = *from++;
+        } while (--n &gt; 0);
+    }
+}
+</pre></div>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Duplication-of-Side-Effects.html
===================================================================
--- public/doc/gnu-c/Duplication-of-Side-Effects.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Duplication-of-Side-Effects.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,137 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Duplication of Side Effects (GNU C Language Manual)</title>
+
+<meta name="description" content="Duplication of Side Effects (GNU C Language Manual)">
+<meta name="keywords" content="Duplication of Side Effects (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Macro-Pitfalls.html" rel="up" title="Macro Pitfalls">
+<link href="Macros-and-Auto-Type.html" rel="next" title="Macros and Auto Type">
+<link href="Swallowing-the-Semicolon.html" rel="prev" title="Swallowing the Semicolon">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Duplication-of-Side-Effects"></span><div class="header">
+<p>
+Next: <a href="Macros-and-Auto-Type.html" accesskey="n" rel="next">Macros and Auto Type</a>, Previous: <a href="Swallowing-the-Semicolon.html" accesskey="p" rel="prev">Swallowing the Semicolon</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>
+</div>
+<hr>
+<span id="Duplication-of-Side-Effects-1"></span><h4 class="subsubsection">26.5.10.4 Duplication of Side Effects</h4>
+
+<span id="index-side-effects-_0028in-macro-arguments_0029"></span>
+<span id="index-unsafe-macros"></span>
+<p>Many C programs define a macro <code>min</code>, for &ldquo;minimum&rdquo;, like this:
+</p>
+<div class="example">
+<pre class="example">#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="example">
+<pre class="example">next = min (x + y, foo (z));
+</pre></div>
+
+<p>it expands as follows:
+</p>
+<div class="example">
+<pre class="example">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 twice when the statement is executed.  If it has side
+effects or if it takes a long time to compute, that may be
+undesirable.  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.  In general, that requires
+using <code>__auto_type</code> (see <a href="Auto-Type.html">Auto Type</a>).  How to use it for this
+is described in the following section.  See <a href="Macros-and-Auto-Type.html">Macros and Auto Type</a>.
+</p>
+<p>Otherwise, you will need 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="example">
+<pre class="example">#define min(X, Y)  ((X) &lt; (Y) ? (X) : (Y))
+/* <span class="roman">&hellip;</span> */
+{
+  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>
+<p>When the repeated value appears as the condition of the <code>?:</code>
+operator and again as its <var>iftrue</var> expression, you can avoid
+repeated execution by omitting the <var>iftrue</var> expression, like this:
+</p>
+<div class="example">
+<pre class="example">#define x_or_y(X, Y)  ((X) ? : (Y))
+</pre></div>
+
+<p>In GNU C, this expands to use the first macro argument&rsquo;s value if that
+isn&rsquo;t zero.  If that&rsquo;s zero, it compiles the second argument and uses
+that value.  See <a href="Conditional-Expression.html">Conditional Expression</a>.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Macros-and-Auto-Type.html" accesskey="n" rel="next">Macros and Auto Type</a>, Previous: <a href="Swallowing-the-Semicolon.html" accesskey="p" rel="prev">Swallowing the Semicolon</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Dynamic-Memory-Allocation.html
===================================================================
--- public/doc/gnu-c/Dynamic-Memory-Allocation.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Dynamic-Memory-Allocation.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,161 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Dynamic Memory Allocation (GNU C Language Manual)</title>
+
+<meta name="description" content="Dynamic Memory Allocation (GNU C Language Manual)">
+<meta name="keywords" content="Dynamic Memory Allocation (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Structures.html" rel="up" title="Structures">
+<link href="Field-Offset.html" rel="next" title="Field Offset">
+<link href="Referencing-Fields.html" rel="prev" title="Referencing Fields">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Dynamic-Memory-Allocation"></span><div class="header">
+<p>
+Next: <a href="Field-Offset.html" accesskey="n" rel="next">Field Offset</a>, Previous: <a href="Referencing-Fields.html" accesskey="p" rel="prev">Referencing Fields</a>, Up: <a href="Structures.html" accesskey="u" rel="up">Structures</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>
+</div>
+<hr>
+<span id="Dynamic-Memory-Allocation-1"></span><h3 class="section">15.2 Dynamic Memory Allocation</h3>
+<span id="index-dynamic-memory-allocation"></span>
+<span id="index-memory-allocation_002c-dynamic"></span>
+<span id="index-allocating-memory-dynamically"></span>
+
+<p>To allocate an object dynamically, call the library function
+<code>malloc</code> (see <a href="https://www.gnu.org/software/libc/manual/html_node/Basic-Allocation.html#Basic-Allocation">The GNU C Library</a> in <cite>The GNU C Library
+Reference Manual</cite>).  Here is how to allocate an object of type
+<code>struct intlistlink</code>.  To make this code work, include the file
+<samp>stdlib.h</samp>, like this:
+</p>
+<div class="example">
+<pre class="example">#include &lt;stddef.h&gt;  /* <span class="roman">Defines <code>NULL</code>.</span> */
+#include &lt;stdlib.h&gt;  /* <span class="roman">Declares <code>malloc</code>.</span>  */
+
+&hellip;
+
+struct intlistlink *
+alloc_intlistlink ()
+{
+  struct intlistlink *p;
+
+  p = malloc (sizeof (struct intlistlink));
+
+  if (p == NULL)
+    fatal (&quot;Ran out of storage&quot;);
+
+  /* <span class="roman">Initialize the contents.</span> */
+  p-&gt;datum = 0;
+  p-&gt;next = NULL;
+
+  return p;
+}
+</pre></div>
+
+<p><code>malloc</code> returns <code>void *</code>, so the assignment to <code>p</code>
+will automatically convert it to type <code>struct intlistlink *</code>.
+The return value of <code>malloc</code> is always sufficiently aligned
+(see <a href="Type-Alignment.html">Type Alignment</a>) that it is valid for any data type.
+</p>
+<p>The test for <code>p == NULL</code> is necessary because <code>malloc</code>
+returns a null pointer if it cannot get any storage.  We assume that
+the program defines the function <code>fatal</code> to report a fatal error
+to the user.
+</p>
+<p>Here&rsquo;s how to add one more integer to the front of such a list:
+</p>
+<div class="example">
+<pre class="example">struct intlistlink *my_list = NULL;
+
+void
+add_to_mylist (int my_int)
+{
+  struct intlistlink *p = alloc_intlistlink ();
+
+  p-&gt;datum = my_int;
+  p-&gt;next = mylist;
+  mylist = p;
+}
+</pre></div>
+
+<p>The way to free the objects is by calling <code>free</code>.  Here&rsquo;s
+a function to free all the links in one of these lists:
+</p>
+<div class="example">
+<pre class="example">void
+free_intlist (struct intlistlink *p)
+{
+  while (p)
+    {
+      struct intlistlink *q = p;
+      p = p-&gt;next;
+      free (q);
+    }
+}
+</pre></div>
+
+<p>We must extract the <code>next</code> pointer from the object before freeing
+it, because <code>free</code> can clobber the data that was in the object.
+For the same reason, the program must not use the list any more after
+freeing its elements.  To make sure it won&rsquo;t, it is best to clear out
+the variable where the list was stored, like this:
+</p>
+<div class="example">
+<pre class="example">free_intlist (mylist);
+
+mylist = NULL;
+</pre></div>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Field-Offset.html" accesskey="n" rel="next">Field Offset</a>, Previous: <a href="Referencing-Fields.html" accesskey="p" rel="prev">Referencing Fields</a>, Up: <a href="Structures.html" accesskey="u" rel="up">Structures</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/English.html
===================================================================
--- public/doc/gnu-c/English.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/English.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,98 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>English (GNU C Language Manual)</title>
+
+<meta name="description" content="English (GNU C Language Manual)">
+<meta name="keywords" content="English (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Lexical-Syntax.html" rel="up" title="Lexical Syntax">
+<link href="Characters.html" rel="next" title="Characters">
+<link href="Lexical-Syntax.html" rel="prev" title="Lexical Syntax">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="English"></span><div class="header">
+<p>
+Next: <a href="Characters.html" accesskey="n" rel="next">Characters</a>, Up: <a href="Lexical-Syntax.html" accesskey="u" rel="up">Lexical Syntax</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>
+</div>
+<hr>
+<span id="Write-Programs-in-English_0021"></span><h3 class="section">5.1 Write Programs in English!</h3>
+
+<p>In principle, you can write the function and variable names in a
+program, and the comments, in any human language.  C allows any kinds
+of characters in comments, and you can put non-ASCII characters into
+identifiers with a special prefix.  However, to enable programmers in
+all countries to understand and develop the program, it is best given
+today&rsquo;s circumstances to write identifiers and comments in
+English.
+</p>
+<p>English is the one language that programmers in all countries
+generally study.  If a program&rsquo;s names are in English, most
+programmers in Bangladesh, Belgium, Bolivia, Brazil, and Bulgaria can
+understand them.  Most programmers in those countries can speak
+English, or at least read it, but they do not read each other&rsquo;s
+languages at all.  In India, with so many languages, two programmers
+may have no common language other than English.
+</p>
+<p>If you don&rsquo;t feel confident in writing English, do the best you can,
+and follow each English comment with a version in a language you
+write better; add a note asking others to translate that to English.
+Someone will eventually do that.
+</p>
+<p>The program&rsquo;s user interface is a different matter.  We don&rsquo;t need to
+choose one language for that; it is easy to support multiple languages
+and let each user choose the language to use.  This requires writing
+the program to support localization of its interface.  (The
+<code>gettext</code> package exists to support this; see <a href="https://www.gnu.org/software/libc/manual/html_node/Message-Translation.html#Message-Translation">The GNU C Library</a> in <cite>The GNU C Library Reference
+Manual</cite>.)  Then a community-based translation effort can provide
+support for all the languages users want to use.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Enumeration-Types.html
===================================================================
--- public/doc/gnu-c/Enumeration-Types.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Enumeration-Types.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,171 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Enumeration Types (GNU C Language Manual)</title>
+
+<meta name="description" content="Enumeration Types (GNU C Language Manual)">
+<meta name="keywords" content="Enumeration Types (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html" rel="up" title="Top">
+<link href="Defining-Typedef-Names.html" rel="next" title="Defining Typedef Names">
+<link href="Arrays-of-Variable-Length.html" rel="prev" title="Arrays of Variable Length">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Enumeration-Types"></span><div class="header">
+<p>
+Next: <a href="Defining-Typedef-Names.html" accesskey="n" rel="next">Defining Typedef Names</a>, Previous: <a href="Arrays.html" accesskey="p" rel="prev">Arrays</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</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>
+</div>
+<hr>
+<span id="Enumeration-Types-1"></span><h2 class="chapter">17 Enumeration Types</h2>
+<span id="index-enumeration-types"></span>
+<span id="index-types_002c-enumeration"></span>
+<span id="index-enumerator"></span>
+
+<p>An <em>enumeration type</em> represents a limited set of integer values,
+each with a name.  It is effectively equivalent to a primitive integer
+type.
+</p>
+<p>Suppose we have a list of possible emotional states to store in an
+integer variable.  We can give names to these alternative values with
+an enumeration:
+</p>
+<div class="example">
+<pre class="example">enum emotion_state { neutral, happy, sad, worried,
+                     calm, nervous };
+</pre></div>
+
+<p>(Never mind that this is a simplistic way to classify emotional states;
+it&rsquo;s just a code example.)
+</p>
+<p>The names inside the enumeration are called <em>enumerators</em>.  The
+enumeration type defines them as constants, and their values are
+consecutive integers; <code>neutral</code> is 0, <code>happy</code> is 1,
+<code>sad</code> is 2, and so on.  Alternatively, you can specify values for
+the enumerators explicitly like this:
+</p>
+<div class="example">
+<pre class="example">enum emotion_state { neutral = 2, happy = 5,
+                     sad = 20, worried = 10,
+                     calm = -5, nervous = -300 };
+</pre></div>
+
+<p>Each enumerator which does not specify a value gets value zero
+(if it is at the beginning) or the next consecutive integer.
+</p>
+<div class="example">
+<pre class="example">/* <span class="roman"><code>neutral</code> is 0 by default,</span>
+   <span class="roman">and <code>worried</code> is 21 by default.</span>  */
+enum emotion_state { neutral,
+                      happy = 5, sad = 20, worried,
+                      calm = -5, nervous = -300 };
+</pre></div>
+
+<p>If an enumerator is obsolete, you can specify that using it should
+cause a warning, by including an attribute in the enumerator&rsquo;s
+declaration.  Here is how <code>happy</code> would look with this
+attribute:
+</p>
+<div class="example">
+<pre class="example">happy __attribute__
+      ((deprecated
+        (&quot;impossible under plutocratic rule&quot;)))
+      = 5,
+</pre></div>
+
+<p>See <a href="Attributes.html">Attributes</a>.
+</p>
+<p>You can declare variables with the enumeration type:
+</p>
+<div class="example">
+<pre class="example">enum emotion_state feelings_now;
+</pre></div>
+
+<p>In the C code itself, this is equivalent to declaring the variable
+<code>int</code>.  (If all the enumeration values are positive, it is
+equivalent to <code>unsigned int</code>.)  However, declaring it with the
+enumeration type has an advantage in debugging, because GDB knows it
+should display the current value of the variable using the
+corresponding name.  If the variable&rsquo;s type is <code>int</code>, GDB can
+only show the value as a number.
+</p>
+<p>The identifier that follows <code>enum</code> is called a <em>type tag</em>
+since it distinguishes different enumeration types.  Type tags are in
+a separate name space and belong to scopes like most other names in C.
+See <a href="Type-Tags.html">Type Tags</a>, for explanation.
+</p>
+<p>You can predeclare an <code>enum</code> type tag like a structure or union
+type tag, like this:
+</p>
+<div class="example">
+<pre class="example">enum foo;
+</pre></div>
+
+<p>The <code>enum</code> type is incomplete until you finish defining it.
+</p>
+<p>You can optionally include a trailing comma at the end of a list of
+enumeration values:
+</p>
+<div class="example">
+<pre class="example">enum emotion_state { neutral, happy, sad, worried,
+                     calm, nervous, };
+</pre></div>
+
+<p>This is useful in some macro definitions, since it enables you to
+assemble the list of enumerators without knowing which one is last.
+The extra comma does not change the meaning of the enumeration in any
+way.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Defining-Typedef-Names.html" accesskey="n" rel="next">Defining Typedef Names</a>, Previous: <a href="Arrays.html" accesskey="p" rel="prev">Arrays</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Environment-Variables.html
===================================================================
--- public/doc/gnu-c/Environment-Variables.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Environment-Variables.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,113 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Environment Variables (GNU C Language Manual)</title>
+
+<meta name="description" content="Environment Variables (GNU C Language Manual)">
+<meta name="keywords" content="Environment Variables (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="The-main-Function.html" rel="up" title="The main Function">
+<link href="Advanced-Definitions.html" rel="next" title="Advanced Definitions">
+<link href="Command_002dline-Parameters.html" rel="prev" title="Command-line Parameters">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Environment-Variables"></span><div class="header">
+<p>
+Previous: <a href="Command_002dline-Parameters.html" accesskey="p" rel="prev">Command-line Parameters</a>, Up: <a href="The-main-Function.html" accesskey="u" rel="up">The main Function</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>
+</div>
+<hr>
+<span id="Accessing-Environment-Variables"></span><h4 class="subsection">22.6.3 Accessing Environment Variables</h4>
+<span id="index-environment-variables"></span>
+
+<p>You can optionally include a third parameter to <code>main</code>, another
+array of strings, to capture the environment variables available to
+the program.  Unlike what happens with <code>argv</code>, there is no
+additional parameter for the count of environment variables; rather,
+the array of environment variables concludes with a null pointer.
+</p>
+<div class="example">
+<pre class="example">#include &lt;stdio.h&gt;   /* <span class="roman">Declares <code>printf</code>.</span> */
+
+int
+main (int argc, char *argv[], char *envp[])
+{
+  /* <span class="roman">Print out all environment variables.</span> */
+  int i = 0;
+  while (envp[i])
+    {
+      printf (&quot;%s\n&quot;, envp[i]);
+      i++;
+    }
+}
+</pre></div>
+
+<p>Another method of retrieving environment variables is to use the
+library function <code>getenv</code>, which is defined in <code>stdlib.h</code>.
+Using <code>getenv</code> does not require defining <code>main</code> to accept the
+<code>envp</code> pointer.  For example, here is a program that fetches and prints
+the user&rsquo;s home directory (if defined):
+</p>
+<div class="example">
+<pre class="example">#include &lt;stdlib.h&gt;  /* <span class="roman">Declares <code>getenv</code>.</span> */
+#include &lt;stdio.h&gt;   /* <span class="roman">Declares <code>printf</code>.</span> */
+
+int
+main (void)
+{
+  char *home_directory = getenv (&quot;HOME&quot;);
+  if (home_directory)
+    printf (&quot;My home directory is: %s\n&quot;, home_directory);
+  else
+    printf (&quot;My home directory is not defined!\n&quot;);
+}
+</pre></div>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Error-Recovery.html
===================================================================
--- public/doc/gnu-c/Error-Recovery.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Error-Recovery.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,162 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Error Recovery (GNU C Language Manual)</title>
+
+<meta name="description" content="Error Recovery (GNU C Language Manual)">
+<meta name="keywords" content="Error Recovery (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Floating-Point-in-Depth.html" rel="up" title="Floating Point in Depth">
+<link href="Exact-Floating-Constants.html" rel="next" title="Exact Floating Constants">
+<link href="Fused-Multiply_002dAdd.html" rel="prev" title="Fused Multiply-Add">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Error-Recovery"></span><div class="header">
+<p>
+Next: <a href="Exact-Floating-Constants.html" accesskey="n" rel="next">Exact Floating Constants</a>, Previous: <a href="Fused-Multiply_002dAdd.html" accesskey="p" rel="prev">Fused Multiply-Add</a>, Up: <a href="Floating-Point-in-Depth.html" accesskey="u" rel="up">Floating Point in Depth</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>
+</div>
+<hr>
+<span id="Error-Recovery-1"></span><h3 class="section">28.11 Error Recovery</h3>
+<span id="index-error-recovery-_0028floating-point_0029"></span>
+<span id="index-floating_002dpoint-error-recovery"></span>
+
+<p>When two numbers are combined by one of the four basic
+operations, the result often requires rounding to storage
+precision.  For accurate computation, one would like to be able
+to recover that rounding error.  With historical floating-point
+designs, it was difficult to do so portably, but now that IEEE
+754 arithmetic is almost universal, the job is much easier.
+</p>
+<p>For addition with the default <em>round-to-nearest</em> rounding
+mode, we can determine the error in a sum like this:
+</p>
+<div class="example">
+<pre class="example">volatile double err, sum, tmp, x, y;
+
+if (fabs (x) &gt;= fabs (y))
+  {
+    sum = x + y;
+    tmp = sum - x;
+    err = y - tmp;
+  }
+else /* fabs (x) &lt; fabs (y) */
+  {
+    sum = x + y;
+    tmp = sum - y;
+    err = x - tmp;
+  }
+</pre></div>
+
+<p><span id="index-twosum"></span>
+Now, <code>x + y</code> is <em>exactly</em> represented by <code>sum + err</code>.
+This basic operation, which has come to be called <em>twosum</em>
+in the numerical-analysis literature, is the first key to tracking,
+and accounting for, rounding error.
+</p>
+<p>To determine the error in subtraction, just swap the <code>+</code> and
+<code>-</code> operators.
+</p>
+<p>We used the <code>volatile</code> qualifier (see <a href="volatile.html">volatile</a>) in the
+declaration of the variables, which forces the compiler to store and
+retrieve them from memory, and prevents the compiler from optimizing
+<code>err = y - ((x + y) - x)</code> into <code>err = 0</code>.
+</p>
+<p>For multiplication, we can compute the rounding error without
+magnitude tests with the FMA operation (see <a href="Fused-Multiply_002dAdd.html">Fused Multiply-Add</a>),
+like this:
+</p>
+<div class="example">
+<pre class="example">volatile double err, prod, x, y;
+prod = x * y;                /* <span class="roman">rounded product</span> */
+err  = fma (x, y, -prod);    /* <span class="roman">exact product <code>= <var>prod</var> + <var>err</var></code></span> */
+</pre></div>
+
+<p>For addition, subtraction, and multiplication, we can represent the
+exact result with the notional sum of two values.  However, the exact
+result of division, remainder, or square root potentially requires an
+infinite number of digits, so we can at best approximate it.
+Nevertheless, we can compute an error term that is close to the true
+error: it is just that error value, rounded to machine precision.
+</p>
+<p>For division, you can approximate <code>x / y</code> with <code>quo + err</code>
+like this:
+</p>
+<div class="example">
+<pre class="example">volatile double err, quo, x, y;
+quo = x / y;
+err = fma (-quo, y, x) / y;
+</pre></div>
+
+<p>For square root, we can approximate <code>sqrt (x)</code> with <code>root +
+err</code> like this:
+</p>
+<div class="example">
+<pre class="example">volatile double err, root, x;
+root = sqrt (x);
+err = fma (-root, root, x) / (root + root);
+</pre></div>
+
+<p>With the reliable and predictable floating-point design provided
+by IEEE 754 arithmetic, we now have the tools we need to track
+errors in the five basic floating-point operations, and we can
+effectively simulate computing in twice working precision, which
+is sometimes sufficient to remove almost all traces of arithmetic
+errors.
+</p>
+
+
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Exact-Floating-Constants.html" accesskey="n" rel="next">Exact Floating Constants</a>, Previous: <a href="Fused-Multiply_002dAdd.html" accesskey="p" rel="prev">Fused Multiply-Add</a>, Up: <a href="Floating-Point-in-Depth.html" accesskey="u" rel="up">Floating Point in Depth</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Exact-Floating-Constants.html
===================================================================
--- public/doc/gnu-c/Exact-Floating-Constants.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Exact-Floating-Constants.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,118 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Exact Floating Constants (GNU C Language Manual)</title>
+
+<meta name="description" content="Exact Floating Constants (GNU C Language Manual)">
+<meta name="keywords" content="Exact Floating Constants (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Floating-Point-in-Depth.html" rel="up" title="Floating Point in Depth">
+<link href="Handling-Infinity.html" rel="next" title="Handling Infinity">
+<link href="Error-Recovery.html" rel="prev" title="Error Recovery">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Exact-Floating-Constants"></span><div class="header">
+<p>
+Next: <a href="Handling-Infinity.html" accesskey="n" rel="next">Handling Infinity</a>, Previous: <a href="Error-Recovery.html" accesskey="p" rel="prev">Error Recovery</a>, Up: <a href="Floating-Point-in-Depth.html" accesskey="u" rel="up">Floating Point in Depth</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>
+</div>
+<hr>
+<span id="Exact-Floating_002dPoint-Constants"></span><h3 class="section">28.12 Exact Floating-Point Constants</h3>
+<span id="index-exact-specification-of-floating_002dpoint-constants"></span>
+<span id="index-floating_002dpoint-constants_002c-exact-specification-of"></span>
+
+<p>One of the frustrations that numerical programmers have suffered
+with since the dawn of digital computers is the inability to
+precisely specify numbers in their programs.  On the early
+decimal machines, that was not an issue: you could write a
+constant <code>1e-30</code> and be confident of that exact value
+being used in floating-point operations.  However, when the
+hardware works in a base other than 10, then human-specified
+numbers have to be converted to that base, and then converted
+back again at output time.  The two base conversions are rarely
+exact, and unwanted rounding errors are introduced.
+</p>
+<span id="index-hexademical-floating_002dpoint-constants"></span>
+<p>As computers usually represent numbers in a base other than 10,
+numbers often must be converted to and from different bases, and
+rounding errors can occur during conversion.  This problem is solved
+in C using hexademical floating-point constants.  For example,
+<code>+0x1.fffffcp-1</code> is the number that is the IEEE 754 32-bit value
+closest to, but below, <code>1.0</code>. The significand is represented as a
+hexadecimal fraction, and the <em>power of two</em> is written in
+decimal following the exponent letter <code>p</code> (the traditional
+exponent letter <code>e</code> is not possible, because it is a hexadecimal
+digit).
+</p>
+<p>In <code>printf</code> and <code>scanf</code> and related functions, you can use
+the &lsquo;<samp>%a</samp>&rsquo; and &lsquo;<samp>%A</samp>&rsquo; format specifiers for writing and reading
+hexadecimal floating-point values.  &lsquo;<samp>%a</samp>&rsquo; writes them with lower
+case letters and &lsquo;<samp>%A</samp>&rsquo; writes them with upper case letters.  For
+instance, this code reproduces our sample number:
+</p>
+<div class="example">
+<pre class="example">printf (&quot;%a\n&quot;, 1.0 - pow (2.0, -23));
+    -| 0x1.fffffcp-1
+</pre></div>
+
+<p>The <code>strtod</code> family was similarly extended to recognize
+numbers in that new format.
+</p>
+<p>If you want to ensure exact data representation for transfer of
+floating-point numbers between C programs on different
+computers, then hexadecimal constants are an optimum choice.
+</p>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Handling-Infinity.html" accesskey="n" rel="next">Handling Infinity</a>, Previous: <a href="Error-Recovery.html" accesskey="p" rel="prev">Error Recovery</a>, Up: <a href="Floating-Point-in-Depth.html" accesskey="u" rel="up">Floating Point in Depth</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Exact-Floating_002dPoint.html
===================================================================
--- public/doc/gnu-c/Exact-Floating_002dPoint.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Exact-Floating_002dPoint.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,96 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Exact Floating-Point (GNU C Language Manual)</title>
+
+<meta name="description" content="Exact Floating-Point (GNU C Language Manual)">
+<meta name="keywords" content="Exact Floating-Point (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Floating-Point-in-Depth.html" rel="up" title="Floating Point in Depth">
+<link href="Rounding.html" rel="next" title="Rounding">
+<link href="Exception-Flags.html" rel="prev" title="Exception Flags">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Exact-Floating_002dPoint"></span><div class="header">
+<p>
+Next: <a href="Rounding.html" accesskey="n" rel="next">Rounding</a>, Previous: <a href="Exception-Flags.html" accesskey="p" rel="prev">Exception Flags</a>, Up: <a href="Floating-Point-in-Depth.html" accesskey="u" rel="up">Floating Point in Depth</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>
+</div>
+<hr>
+<span id="Exact-Floating_002dPoint-Arithmetic"></span><h3 class="section">28.6 Exact Floating-Point Arithmetic</h3>
+<span id="index-exact-floating_002dpoint-arithmetic"></span>
+<span id="index-floating_002dpoint-arithmetic_002c-exact"></span>
+
+<p>As long as the numbers are exactly representable (fractions whose
+denominator is a power of 2), and intermediate results do not require
+rounding, then floating-point arithmetic is <em>exact</em>.  It is easy
+to predict how many digits are needed for the results of arithmetic
+operations:
+</p>
+<ul>
+<li> addition and subtraction of two <var>n</var>-digit values with the
+<em>same</em> exponent require at most <code><var>n</var> + 1</code> digits, but
+when the exponents differ, many more digits may be needed;
+
+</li><li> multiplication of two <var>n</var>-digit values requires exactly
+2 <var>n</var> digits;
+
+</li><li> although integer division produces a quotient and a remainder of
+no more than <var>n</var>-digits, floating-point remainder and square
+root may require an unbounded number of digits, and the quotient
+can need many more digits than can be stored.
+
+</li></ul>
+
+<p>Whenever a result requires more than <var>n</var> digits, rounding
+is needed.
+</p>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Example-of-for.html
===================================================================
--- public/doc/gnu-c/Example-of-for.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Example-of-for.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,98 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Example of for (GNU C Language Manual)</title>
+
+<meta name="description" content="Example of for (GNU C Language Manual)">
+<meta name="keywords" content="Example of for (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Loop-Statements.html" rel="up" title="Loop Statements">
+<link href="Omitted-for_002dExpressions.html" rel="next" title="Omitted for-Expressions">
+<link href="for-Statement.html" rel="prev" title="for Statement">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Example-of-for"></span><div class="header">
+<p>
+Next: <a href="Omitted-for_002dExpressions.html" accesskey="n" rel="next">Omitted for-Expressions</a>, Previous: <a href="for-Statement.html" accesskey="p" rel="prev">for Statement</a>, Up: <a href="Loop-Statements.html" accesskey="u" rel="up">Loop Statements</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>
+</div>
+<hr>
+<span id="Example-of-for-1"></span><h4 class="subsection">19.6.5 Example of <code>for</code></h4>
+
+<p>Here is the <code>for</code> statement from the iterative Fibonacci
+function:
+</p>
+<div class="example">
+<pre class="example">int i;
+for (i = 1; i &lt; n; ++i)
+  /* <span class="roman">If <code>n</code> is 1 or less, the loop runs zero times,</span>  */
+  /* <span class="roman">since <code>i &lt; n</code> is false the first time.</span>  */
+  {
+    /* <span class="roman">Now <var>last</var> is <code>fib (<var>i</var>)</code></span>
+       <span class="roman">and <var>prev</var> is <code>fib (<var>i</var> - 1)</code>.</span>  */
+    /* <span class="roman">Compute <code>fib (<var>i</var> + 1)</code>.</span>  */
+    int next = prev + last;
+    /* <span class="roman">Shift the values down.</span>  */
+    prev = last;
+    last = next;
+    /* <span class="roman">Now <var>last</var> is <code>fib (<var>i</var> + 1)</code></span>
+       <span class="roman">and <var>prev</var> is <code>fib (<var>i</var>)</code>.</span>
+       <span class="roman">But that won&rsquo;t stay true for long,</span>
+       <span class="roman">because we are about to increment <var>i</var>.</span>  */
+  }
+</pre></div>
+
+<p>In this example, <var>start</var> is <code>i = 1</code>, meaning set <code>i</code> to
+1.  <var>continue-test</var> is <code>i &lt; n</code>, meaning keep repeating the
+loop as long as <code>i</code> is less than <code>n</code>.  <var>advance</var> is
+<code>i++</code>, meaning increment <code>i</code> by 1.  The body is a block
+that contains a declaration and two statements.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Exception-Flags.html
===================================================================
--- public/doc/gnu-c/Exception-Flags.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Exception-Flags.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,102 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Exception Flags (GNU C Language Manual)</title>
+
+<meta name="description" content="Exception Flags (GNU C Language Manual)">
+<meta name="keywords" content="Exception Flags (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Floating-Point-in-Depth.html" rel="up" title="Floating Point in Depth">
+<link href="Exact-Floating_002dPoint.html" rel="next" title="Exact Floating-Point">
+<link href="Invalid-Optimizations.html" rel="prev" title="Invalid Optimizations">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Exception-Flags"></span><div class="header">
+<p>
+Next: <a href="Exact-Floating_002dPoint.html" accesskey="n" rel="next">Exact Floating-Point</a>, Previous: <a href="Invalid-Optimizations.html" accesskey="p" rel="prev">Invalid Optimizations</a>, Up: <a href="Floating-Point-in-Depth.html" accesskey="u" rel="up">Floating Point in Depth</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>
+</div>
+<hr>
+<span id="Floating-Arithmetic-Exception-Flags"></span><h3 class="section">28.5 Floating Arithmetic Exception Flags</h3>
+<span id="index-floating-arithmetic-exception-flags"></span>
+<span id="index-exception-flags-_0028floating-point_0029"></span>
+<span id="index-sticky-exception-flags-_0028floating-point_0029"></span>
+<span id="index-floating-overflow"></span>
+<span id="index-overflow_002c-floating"></span>
+<span id="index-floating-underflow-1"></span>
+<span id="index-underflow_002c-floating-1"></span>
+
+<p><em>Sticky exception flags</em> record the occurrence of particular
+conditions: once set, they remain set until the program explicitly
+clears them.
+</p>
+<p>The conditions include <em>invalid operand</em>,
+<em>division-by_zero</em>, <em>inexact result</em> (i.e., one that
+required rounding), <em>underflow</em>, and <em>overflow</em>.  Some
+extended floating-point designs offer several additional exception
+flags.  The functions <code>feclearexcept</code>, <code>feraiseexcept</code>,
+<code>fetestexcept</code>, <code>fegetexceptflags</code>, and
+<code>fesetexceptflags</code> provide a standardized interface to those
+flags.  See <a href="https://www.gnu.org/software/libc/manual/html_node/Status-bit-operations.html#Status-bit-operations">Status bit operations</a> in <cite>The GNU C Library
+Reference Manual</cite>.
+</p>
+<p>One important use of those <span id="fetestexcept"></span>flags is to do a
+computation that is normally expected to be exact in floating-point
+arithmetic, but occasionally might not be, in which case, corrective
+action is needed.  You can clear the <em>inexact result</em> flag with a
+call to <code>feclearexcept (FE_INEXACT)</code>, do the computation, and
+then test the flag with <code>fetestexcept (FE_INEXACT)</code>; the result
+of that call is 0 if the flag is not set (there was no rounding), and
+1 when there was rounding (which, we presume, implies the program has
+to correct for that).
+</p>
+
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Execution-Control-Expressions.html
===================================================================
--- public/doc/gnu-c/Execution-Control-Expressions.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Execution-Control-Expressions.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,87 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Execution Control Expressions (GNU C Language Manual)</title>
+
+<meta name="description" content="Execution Control Expressions (GNU C Language Manual)">
+<meta name="keywords" content="Execution Control Expressions (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html" rel="up" title="Top">
+<link href="Logical-Operators.html" rel="next" title="Logical Operators">
+<link href="Write-Assignments-Separately.html" rel="prev" title="Write Assignments Separately">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Execution-Control-Expressions"></span><div class="header">
+<p>
+Next: <a href="Binary-Operator-Grammar.html" accesskey="n" rel="next">Binary Operator Grammar</a>, Previous: <a href="Assignment-Expressions.html" accesskey="p" rel="prev">Assignment Expressions</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</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>
+</div>
+<hr>
+<span id="Execution-Control-Expressions-1"></span><h2 class="chapter">8 Execution Control Expressions</h2>
+<span id="index-execution-control-expressions"></span>
+<span id="index-expressions_002c-execution-control"></span>
+
+<p>This chapter describes the C operators that combine expressions to
+control which of those expressions execute, or in which order.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Logical-Operators.html" accesskey="1">Logical Operators</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Logical conjunction, disjunction, negation.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Logicals-and-Comparison.html" accesskey="2">Logicals and Comparison</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Logical operators with comparison operators.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Logicals-and-Assignments.html" accesskey="3">Logicals and Assignments</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Assignments with logical operators.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Conditional-Expression.html" accesskey="4">Conditional Expression</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">An if/else construct inside expressions.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Comma-Operator.html" accesskey="5">Comma Operator</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Build a sequence of subexpressions.
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Explicit-Type-Conversion.html
===================================================================
--- public/doc/gnu-c/Explicit-Type-Conversion.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Explicit-Type-Conversion.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,120 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Explicit Type Conversion (GNU C Language Manual)</title>
+
+<meta name="description" content="Explicit Type Conversion (GNU C Language Manual)">
+<meta name="keywords" content="Explicit Type Conversion (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Type-Conversions.html" rel="up" title="Type Conversions">
+<link href="Assignment-Type-Conversions.html" rel="next" title="Assignment Type Conversions">
+<link href="Type-Conversions.html" rel="prev" title="Type Conversions">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Explicit-Type-Conversion"></span><div class="header">
+<p>
+Next: <a href="Assignment-Type-Conversions.html" accesskey="n" rel="next">Assignment Type Conversions</a>, Up: <a href="Type-Conversions.html" accesskey="u" rel="up">Type Conversions</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>
+</div>
+<hr>
+<span id="Explicit-Type-Conversion-1"></span><h3 class="section">24.1 Explicit Type Conversion</h3>
+<span id="index-cast"></span>
+<span id="index-explicit-type-conversion"></span>
+
+<p>You can do explicit conversions using the unary <em>cast</em> operator,
+which is written as a type designator (see <a href="Type-Designators.html">Type Designators</a>) in
+parentheses.  For example, <code>(int)</code> is the operator to cast to
+type <code>int</code>.  Here&rsquo;s an example of using it:
+</p>
+<div class="example">
+<pre class="example">{
+  double d = 5.5;
+
+  printf (&quot;Floating point value: %f\n&quot;, d);
+  printf (&quot;Rounded to integer: %d\n&quot;, (int) d);
+}
+</pre></div>
+
+<p>Using <code>(int) d</code> passes an <code>int</code> value as argument to
+<code>printf</code>, so you can print it with &lsquo;<samp>%d</samp>&rsquo;.  Using just
+<code>d</code> without the cast would pass the value as <code>double</code>.
+That won&rsquo;t work at all with &lsquo;<samp>%d</samp>&rsquo;; the results would be gibberish.
+</p>
+<p>To divide one integer by another without rounding,
+cast either of the integers to <code>double</code> first:
+</p>
+<div class="example">
+<pre class="example">(double) <var>dividend</var> / <var>divisor</var>
+<var>dividend</var> / (double) <var>divisor</var>
+</pre></div>
+
+<p>It is enough to cast one of them, because that forces the common type
+to <code>double</code> so the other will be converted automatically.
+</p>
+<p>The valid cast conversions are:
+</p>
+<ul>
+<li> One numerical type to another.
+
+</li><li> One pointer type to another.
+(Converting between pointers that point to functions
+and pointers that point to data is not standard C.)
+
+</li><li> A pointer type to an integer type.
+
+</li><li> An integer type to a pointer type.
+
+</li><li> To a union type, from the type of any alternative in the union
+(see <a href="Unions.html">Unions</a>).  (This is a GNU extension.)
+
+</li><li> Anything, to <code>void</code>.
+</li></ul>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Expression-Statement.html
===================================================================
--- public/doc/gnu-c/Expression-Statement.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Expression-Statement.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,99 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Expression Statement (GNU C Language Manual)</title>
+
+<meta name="description" content="Expression Statement (GNU C Language Manual)">
+<meta name="keywords" content="Expression Statement (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Statements.html" rel="up" title="Statements">
+<link href="if-Statement.html" rel="next" title="if Statement">
+<link href="Statements.html" rel="prev" title="Statements">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Expression-Statement"></span><div class="header">
+<p>
+Next: <a href="if-Statement.html" accesskey="n" rel="next">if Statement</a>, Up: <a href="Statements.html" accesskey="u" rel="up">Statements</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>
+</div>
+<hr>
+<span id="Expression-Statement-1"></span><h3 class="section">19.1 Expression Statement</h3>
+<span id="index-expression-statement"></span>
+<span id="index-statement_002c-expression"></span>
+
+<p>The most common kind of statement in C is an <em>expression statement</em>.
+It consists of an expression followed by a
+semicolon.  The expression&rsquo;s value is discarded, so the expressions
+that are useful are those that have side effects: assignment
+expressions, increment and decrement expressions, and function calls.
+Here are examples of expression statements:
+</p>
+<div class="example">
+<pre class="example">x = 5;              /* <span class="roman">Assignment expression.</span> */
+p++;                /* <span class="roman">Increment expression.</span> */
+printf (&quot;Done\n&quot;);  /* <span class="roman">Function call expression.</span> */
+*p;                 /* <span class="roman">Cause <code>SIGSEGV</code> signal if <code>p</code> is null.</span> */
+x + y;              /* <span class="roman">Useless statement without effect.</span> */
+</pre></div>
+
+<p>In very unusual circumstances we use an expression statement
+whose purpose is to get a fault if an address is invalid:
+</p>
+<div class="example">
+<pre class="example">volatile char *p;
+<span class="roman">&hellip;</span>
+*p;                 /* <span class="roman">Cause signal if <code>p</code> is null.</span> */
+</pre></div>
+
+<p>If the target of <code>p</code> is not declared <code>volatile</code>, the
+compiler might optimize away the memory access, since it knows that
+the value isn&rsquo;t really used.  See <a href="volatile.html">volatile</a>.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Extern-Declarations.html
===================================================================
--- public/doc/gnu-c/Extern-Declarations.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Extern-Declarations.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,131 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Extern Declarations (GNU C Language Manual)</title>
+
+<meta name="description" content="Extern Declarations (GNU C Language Manual)">
+<meta name="keywords" content="Extern Declarations (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Variables.html" rel="up" title="Variables">
+<link href="Allocating-File_002dScope.html" rel="next" title="Allocating File-Scope">
+<link href="Static-Local-Variables.html" rel="prev" title="Static Local Variables">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Extern-Declarations"></span><div class="header">
+<p>
+Next: <a href="Allocating-File_002dScope.html" accesskey="n" rel="next">Allocating File-Scope</a>, Previous: <a href="Static-Local-Variables.html" accesskey="p" rel="prev">Static Local Variables</a>, Up: <a href="Variables.html" accesskey="u" rel="up">Variables</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>
+</div>
+<hr>
+<span id="extern-Declarations"></span><h3 class="section">20.8 <code>extern</code> Declarations</h3>
+<span id="index-extern-declarations"></span>
+<span id="index-declarations_002c-extern"></span>
+<span id="index-extern"></span>
+
+<p>An <code>extern</code> declaration is used to refer to a global variable
+whose principal declaration comes elsewhere&mdash;in the same module, or in
+another compilation module.  It looks like this:
+</p>
+<div class="example">
+<pre class="example">extern <var>basetype</var> <var>decorated-variable</var>;
+</pre></div>
+
+<p>Its meaning is that, in the current scope, the variable name refers to
+the file-scope variable of that name&mdash;which needs to be declared in a
+non-<code>extern</code>, non-<code>static</code> way somewhere else.
+</p>
+<p>For instance, if one compilation module has this global variable
+declaration
+</p>
+<div class="example">
+<pre class="example">int error_count = 0;
+</pre></div>
+
+<p>then other compilation modules can specify this
+</p>
+<div class="example">
+<pre class="example">extern int error_count;
+</pre></div>
+
+<p>to allow reference to the same variable.
+</p>
+<p>The usual place to write an <code>extern</code> declaration is at top level
+in a source file, but you can write an <code>extern</code> declaration
+inside a block to make a global or static file-scope variable
+accessible in that block.
+</p>
+<p>Since an <code>extern</code> declaration does not allocate space for the
+variable, it can omit the size of an array:
+</p>
+<div class="example">
+<pre class="example">extern int array[];
+</pre></div>
+
+<p>You can use <code>array</code> normally in all contexts where it is
+converted automatically to a pointer.  However, to use it as the
+operand of <code>sizeof</code> is an error, since the size is unknown.
+</p>
+<p>It is valid to have multiple <code>extern</code> declarations for the same
+variable, even in the same scope, if they give the same type.  They do
+not conflict&mdash;they agree.  For an array, it is legitimate for some
+<code>extern</code> declarations can specify the size while others omit it.
+However, if two declarations give different sizes, that is an error.
+</p>
+<p>Likewise, you can use <code>extern</code> declarations at file scope
+(see <a href="File_002dScope-Variables.html">File-Scope Variables</a>) followed by an ordinary global
+(non-static) declaration of the same variable.  They do not conflict,
+because they say compatible things about the same meaning of the variable.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Allocating-File_002dScope.html" accesskey="n" rel="next">Allocating File-Scope</a>, Previous: <a href="Static-Local-Variables.html" accesskey="p" rel="prev">Static Local Variables</a>, Up: <a href="Variables.html" accesskey="u" rel="up">Variables</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Field-Offset.html
===================================================================
--- public/doc/gnu-c/Field-Offset.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Field-Offset.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,93 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Field Offset (GNU C Language Manual)</title>
+
+<meta name="description" content="Field Offset (GNU C Language Manual)">
+<meta name="keywords" content="Field Offset (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Structures.html" rel="up" title="Structures">
+<link href="Structure-Layout.html" rel="next" title="Structure Layout">
+<link href="Dynamic-Memory-Allocation.html" rel="prev" title="Dynamic Memory Allocation">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Field-Offset"></span><div class="header">
+<p>
+Next: <a href="Structure-Layout.html" accesskey="n" rel="next">Structure Layout</a>, Previous: <a href="Dynamic-Memory-Allocation.html" accesskey="p" rel="prev">Dynamic Memory Allocation</a>, Up: <a href="Structures.html" accesskey="u" rel="up">Structures</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>
+</div>
+<hr>
+<span id="Field-Offset-1"></span><h3 class="section">15.3 Field Offset</h3>
+<span id="index-field-offset"></span>
+<span id="index-structure-field-offset"></span>
+<span id="index-offset-of-structure-fields"></span>
+
+<p>To determine the offset of a given field <var>field</var> in a structure
+type <var>type</var>, use the macro <code>offsetof</code>, which is defined in
+the file <samp>stddef.h</samp>.  It is used like this:
+</p>
+<div class="example">
+<pre class="example">offsetof (<var>type</var>, <var>field</var>)
+</pre></div>
+
+<p>Here is an example:
+</p>
+<div class="example">
+<pre class="example">struct foo
+{
+  int element;
+  struct foo *next;
+};
+
+offsetof (struct foo, next)
+/* <span class="roman">On most machines that is 4.  It may be 8.</span>  */
+</pre></div>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/File_002dScope-Variables.html
===================================================================
--- public/doc/gnu-c/File_002dScope-Variables.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/File_002dScope-Variables.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,107 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>File-Scope Variables (GNU C Language Manual)</title>
+
+<meta name="description" content="File-Scope Variables (GNU C Language Manual)">
+<meta name="keywords" content="File-Scope Variables (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Variables.html" rel="up" title="Variables">
+<link href="Static-Local-Variables.html" rel="next" title="Static Local Variables">
+<link href="Local-Variables.html" rel="prev" title="Local Variables">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="File_002dScope-Variables"></span><div class="header">
+<p>
+Next: <a href="Static-Local-Variables.html" accesskey="n" rel="next">Static Local Variables</a>, Previous: <a href="Local-Variables.html" accesskey="p" rel="prev">Local Variables</a>, Up: <a href="Variables.html" accesskey="u" rel="up">Variables</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>
+</div>
+<hr>
+<span id="File_002dScope-Variables-1"></span><h3 class="section">20.6 File-Scope Variables</h3>
+<span id="index-file_002dscope-variables"></span>
+<span id="index-global-variables"></span>
+<span id="index-variables_002c-file_002dscope"></span>
+<span id="index-variables_002c-global"></span>
+
+<p>A variable declaration at the top level in a file (not inside a
+function definition) declares a <em>file-scope variable</em>.  Loading a
+program allocates the storage for all the file-scope variables in it,
+and initializes them too.
+</p>
+<p>Each file-scope variable is either <em>static</em> (limited to one
+compilation module) or <em>global</em> (shared with all compilation
+modules in the program).  To make the variable static, write the
+keyword <code>static</code> at the start of the declaration.  Omitting
+<code>static</code> makes the variable global.
+</p>
+<p>The initial value for a file-scope variable can&rsquo;t depend on the
+contents of storage, and can&rsquo;t call any functions.
+</p>
+<div class="example">
+<pre class="example">int foo = 5;         /* <span class="roman">Valid.</span> */
+int bar = foo;       /* <span class="roman">Invalid!</span> */
+int bar = sin (1.0); /* <span class="roman">Invalid!</span> */
+</pre></div>
+
+<p>But it can use the address of another file-scope variable:
+</p>
+<div class="example">
+<pre class="example">int foo;
+int *bar = &amp;foo;     /* <span class="roman">Valid.</span> */
+int arr[5];
+int *bar3 = &amp;arr[3]; /* <span class="roman">Valid.</span> */
+int *bar4 = arr + 4; /* <span class="roman">Valid.</span> */
+</pre></div>
+
+<p>It is valid for a module to have multiple declarations for a
+file-scope variable, as long as they are all global or all static, but
+at most one declaration can specify an initial value for it.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Flexible-Array-Fields.html
===================================================================
--- public/doc/gnu-c/Flexible-Array-Fields.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Flexible-Array-Fields.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,116 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Flexible Array Fields (GNU C Language Manual)</title>
+
+<meta name="description" content="Flexible Array Fields (GNU C Language Manual)">
+<meta name="keywords" content="Flexible Array Fields (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Structures.html" rel="up" title="Structures">
+<link href="Overlaying-Structures.html" rel="next" title="Overlaying Structures">
+<link href="Zero-Length.html" rel="prev" title="Zero Length">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Flexible-Array-Fields"></span><div class="header">
+<p>
+Next: <a href="Overlaying-Structures.html" accesskey="n" rel="next">Overlaying Structures</a>, Previous: <a href="Zero-Length.html" accesskey="p" rel="prev">Zero Length</a>, Up: <a href="Structures.html" accesskey="u" rel="up">Structures</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>
+</div>
+<hr>
+<span id="Flexible-Array-Fields-1"></span><h3 class="section">15.10 Flexible Array Fields</h3>
+<span id="index-flexible-array-fields"></span>
+<span id="index-array-fields_002c-flexible"></span>
+
+<p>The C99 standard adopted a more complex equivalent of zero-length
+array fields.  It&rsquo;s called a <em>flexible array</em>, and it&rsquo;s indicated
+by omitting the length, like this:
+</p>
+<div class="example">
+<pre class="example">struct line
+{
+  int length;
+  char contents[];
+};
+</pre></div>
+
+<p>The flexible array has to be the last field in the structure, and there
+must be other fields before it.
+</p>
+<p>Under the C standard, a structure with a flexible array can&rsquo;t be part
+of another structure, and can&rsquo;t be an element of an array.
+</p>
+<p>GNU C allows static initialization of flexible array fields.  The effect
+is to &ldquo;make the array long enough&rdquo; for the initializer.
+</p>
+<div class="example">
+<pre class="example">struct f1 { int x; int y[]; } f1
+  = { 1, { 2, 3, 4 } };
+</pre></div>
+
+<p>This defines a structure variable named <code>f1</code>
+whose type is <code>struct f1</code>.  In C, a variable name or function name
+never conflicts with a structure type tag.
+</p>
+<p>Omitting the flexible array field&rsquo;s size lets the initializer
+determine it.  This is allowed only when the flexible array is defined
+in the outermost structure and you declare a variable of that
+structure type.  For example:
+</p>
+<div class="example">
+<pre class="example">struct foo { int x; int y[]; };
+struct bar { struct foo z; };
+
+struct foo a = { 1, { 2, 3, 4 } };        // <span class="roman">Valid.</span>
+struct bar b = { { 1, { 2, 3, 4 } } };    // <span class="roman">Invalid.</span>
+struct bar c = { { 1, { } } };            // <span class="roman">Valid.</span>
+struct foo d[1] = { { 1 { 2, 3, 4 } } };  // <span class="roman">Invalid.</span>
+</pre></div>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Float-Example.html
===================================================================
--- public/doc/gnu-c/Float-Example.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Float-Example.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,128 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Float Example (GNU C Language Manual)</title>
+
+<meta name="description" content="Float Example (GNU C Language Manual)">
+<meta name="keywords" content="Float Example (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Beyond-Integers.html" rel="up" title="Beyond Integers">
+<link href="Array-Example.html" rel="next" title="Array Example">
+<link href="Beyond-Integers.html" rel="prev" title="Beyond Integers">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Float-Example"></span><div class="header">
+<p>
+Next: <a href="Array-Example.html" accesskey="n" rel="next">Array Example</a>, Up: <a href="Beyond-Integers.html" accesskey="u" rel="up">Beyond Integers</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>
+</div>
+<hr>
+<span id="An-Example-with-Non_002dInteger-Numbers"></span><h3 class="section">4.1 An Example with Non-Integer Numbers</h3>
+<span id="index-floating-point-example"></span>
+
+<p>Here&rsquo;s a function that operates on and returns <em>floating point</em>
+numbers that don&rsquo;t have to be integers.  Floating point represents a
+number as a fraction together with a power of 2.  (For more detail,
+see <a href="Floating_002dPoint-Data-Types.html">Floating-Point Data Types</a>.)  This example calculates the
+average of three floating point numbers that are passed to it as
+arguments:
+</p>
+<div class="example">
+<pre class="example">double
+average_of_three (double a, double b, double c)
+{
+  return (a + b + c) / 3;
+}
+</pre></div>
+
+<p>The values of the parameter <var>a</var>, <var>b</var> and <var>c</var> do not have to be
+integers, and even when they happen to be integers, most likely their
+average is not an integer.
+</p>
+<p><code>double</code> is the usual data type in C for calculations on
+floating-point numbers.
+</p>
+<p>To print a <code>double</code> with <code>printf</code>, we must use &lsquo;<samp>%f</samp>&rsquo;
+instead of &lsquo;<samp>%d</samp>&rsquo;:
+</p>
+<div class="example">
+<pre class="example">printf (&quot;Average is %f\n&quot;,
+        average_of_three (1.1, 9.8, 3.62));
+</pre></div>
+
+<p>The code that calls <code>printf</code> must pass a <code>double</code> for
+printing with &lsquo;<samp>%f</samp>&rsquo; and an <code>int</code> for printing with &lsquo;<samp>%d</samp>&rsquo;.
+If the argument has the wrong type, <code>printf</code> will produce garbage
+output.
+</p>
+<p>Here&rsquo;s a complete program that computes the average of three
+specific numbers and prints the result:
+</p>
+<div class="example">
+<pre class="example">double
+average_of_three (double a, double b, double c)
+{
+  return (a + b + c) / 3;
+}
+
+int
+main (void)
+{
+    printf (&quot;Average is %f\n&quot;,
+            average_of_three (1.1, 9.8, 3.62));
+    return 0;
+}
+</pre></div>
+
+<p>From now on we will not present examples of calls to <code>main</code>.
+Instead we encourage you to write them for yourself when you want
+to test executing some code.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Floating-Constants.html
===================================================================
--- public/doc/gnu-c/Floating-Constants.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Floating-Constants.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,152 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Floating Constants (GNU C Language Manual)</title>
+
+<meta name="description" content="Floating Constants (GNU C Language Manual)">
+<meta name="keywords" content="Floating Constants (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Constants.html" rel="up" title="Constants">
+<link href="Imaginary-Constants.html" rel="next" title="Imaginary Constants">
+<link href="Integer-Const-Type.html" rel="prev" title="Integer Const Type">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Floating-Constants"></span><div class="header">
+<p>
+Next: <a href="Imaginary-Constants.html" accesskey="n" rel="next">Imaginary Constants</a>, Previous: <a href="Integer-Const-Type.html" accesskey="p" rel="prev">Integer Const Type</a>, Up: <a href="Constants.html" accesskey="u" rel="up">Constants</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>
+</div>
+<hr>
+<span id="Floating_002dPoint-Constants"></span><h3 class="section">12.3 Floating-Point Constants</h3>
+<span id="index-floating_002dpoint-constants"></span>
+<span id="index-constants_002c-floating_002dpoint"></span>
+
+<p>A floating-point constant must have either a decimal point, an
+exponent-of-ten, or both; they distinguish it from an integer
+constant.
+</p>
+<p>To indicate an exponent, write &lsquo;<samp>e</samp>&rsquo; or &lsquo;<samp>E</samp>&rsquo;.  The exponent
+value follows.  It is always written as a decimal number; it can
+optionally start with a sign.  The exponent <var>n</var> means to multiply
+the constant&rsquo;s value by ten to the <var>n</var>th power.
+</p>
+<p>Thus, &lsquo;<samp>1500.0</samp>&rsquo;, &lsquo;<samp>15e2</samp>&rsquo;, &lsquo;<samp>15e+2</samp>&rsquo;, &lsquo;<samp>15.0e2</samp>&rsquo;,
+&lsquo;<samp>1.5e+3</samp>&rsquo;, &lsquo;<samp>.15e4</samp>&rsquo;, and &lsquo;<samp>15000e-1</samp>&rsquo; are six ways of
+writing a floating-point number whose value is 1500.  They are all
+equivalent.
+</p>
+<p>Here are more examples with decimal points:
+</p>
+<div class="example">
+<pre class="example">1.0
+1000.
+3.14159
+.05
+.0005
+</pre></div>
+
+<p>For each of them, here are some equivalent constants written with
+exponents:
+</p>
+<div class="example">
+<pre class="example">1e0, 1.0000e0
+100e1, 100e+1, 100E+1, 1e3, 10000e-1
+3.14159e0
+5e-2, .0005e+2, 5E-2, .0005E2
+.05e-2
+</pre></div>
+
+<p>A floating-point constant normally has type <code>double</code>.  You can
+force it to type <code>float</code> by adding &lsquo;<samp>f</samp>&rsquo; or &lsquo;<samp>F</samp>&rsquo;
+at the end.  For example,
+</p>
+<div class="example">
+<pre class="example">3.14159f
+3.14159e0f
+1000.f
+100E1F
+.0005f
+.05e-2f
+</pre></div>
+
+<p>Likewise, &lsquo;<samp>l</samp>&rsquo; or &lsquo;<samp>L</samp>&rsquo; at the end forces the constant
+to type <code>long double</code>.
+</p>
+<p>You can use exponents in hexadecimal floating constants, but since
+&lsquo;<samp>e</samp>&rsquo; would be interpreted as a hexadecimal digit, the character
+&lsquo;<samp>p</samp>&rsquo; or &lsquo;<samp>P</samp>&rsquo; (for &ldquo;power&rdquo;) indicates an exponent.
+</p>
+<p>The exponent in a hexadecimal floating constant is a possibly-signed
+decimal integer that specifies a power of 2 (<em>not</em> 10 or 16) to
+multiply into the number.
+</p>
+<p>Here are some examples:
+</p>
+<div class="example">
+<pre class="example">0xAp2        // <span class="roman">40 in decimal</span>
+0xAp-1       // <span class="roman">5 in decimal</span>
+0x2.0Bp4     // <span class="roman">16.75 decimal</span>
+0xE.2p3      // <span class="roman">121 decimal</span>
+0x123.ABCp0  // <span class="roman">291.6708984375 in decimal</span>
+0x123.ABCp4  // <span class="roman">4666.734375 in decimal</span>
+0x100p-8     // <span class="roman">1</span>
+0x10p-4      // <span class="roman">1</span>
+0x1p+4       // <span class="roman">16</span>
+0x1p+8       // <span class="roman">256</span>
+</pre></div>
+
+<p>See <a href="Floating_002dPoint-Data-Types.html">Floating-Point Data Types</a>.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Imaginary-Constants.html" accesskey="n" rel="next">Imaginary Constants</a>, Previous: <a href="Integer-Const-Type.html" accesskey="p" rel="prev">Integer Const Type</a>, Up: <a href="Constants.html" accesskey="u" rel="up">Constants</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Floating-Point-in-Depth.html
===================================================================
--- public/doc/gnu-c/Floating-Point-in-Depth.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Floating-Point-in-Depth.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,114 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Floating Point in Depth (GNU C Language Manual)</title>
+
+<meta name="description" content="Floating Point in Depth (GNU C Language Manual)">
+<meta name="keywords" content="Floating Point in Depth (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html" rel="up" title="Top">
+<link href="Floating-Representations.html" rel="next" title="Floating Representations">
+<link href="Maximum-and-Minimum-Values.html" rel="prev" title="Maximum and Minimum Values">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Floating-Point-in-Depth"></span><div class="header">
+<p>
+Next: <a href="Compilation.html" accesskey="n" rel="next">Compilation</a>, Previous: <a href="Integers-in-Depth.html" accesskey="p" rel="prev">Integers in Depth</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</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>
+</div>
+<hr>
+<span id="Floating-Point-in-Depth-1"></span><h2 class="chapter">28 Floating Point in Depth</h2>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Floating-Representations.html" accesskey="1">Floating Representations</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Floating-Type-Specs.html" accesskey="2">Floating Type Specs</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Special-Float-Values.html" accesskey="3">Special Float Values</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Invalid-Optimizations.html" accesskey="4">Invalid Optimizations</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Exception-Flags.html" accesskey="5">Exception Flags</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Exact-Floating_002dPoint.html" accesskey="6">Exact Floating-Point</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Rounding.html" accesskey="7">Rounding</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Rounding-Issues.html" accesskey="8">Rounding Issues</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Significance-Loss.html" accesskey="9">Significance Loss</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Fused-Multiply_002dAdd.html">Fused Multiply-Add</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Error-Recovery.html">Error Recovery</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Exact-Floating-Constants.html">Exact Floating Constants</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Handling-Infinity.html">Handling Infinity</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Handling-NaN.html">Handling NaN</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Signed-Zeros.html">Signed Zeros</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Scaling-by-the-Base.html">Scaling by the Base</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Rounding-Control.html">Rounding Control</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Machine-Epsilon.html">Machine Epsilon</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Complex-Arithmetic.html">Complex Arithmetic</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Round_002dTrip-Base-Conversion.html">Round-Trip Base Conversion</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Further-Reading.html">Further Reading</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Floating-Representations.html
===================================================================
--- public/doc/gnu-c/Floating-Representations.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Floating-Representations.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,103 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Floating Representations (GNU C Language Manual)</title>
+
+<meta name="description" content="Floating Representations (GNU C Language Manual)">
+<meta name="keywords" content="Floating Representations (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Floating-Point-in-Depth.html" rel="up" title="Floating Point in Depth">
+<link href="Floating-Type-Specs.html" rel="next" title="Floating Type Specs">
+<link href="Floating-Point-in-Depth.html" rel="prev" title="Floating Point in Depth">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Floating-Representations"></span><div class="header">
+<p>
+Next: <a href="Floating-Type-Specs.html" accesskey="n" rel="next">Floating Type Specs</a>, Up: <a href="Floating-Point-in-Depth.html" accesskey="u" rel="up">Floating Point in Depth</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>
+</div>
+<hr>
+<span id="Floating_002dPoint-Representations"></span><h3 class="section">28.1 Floating-Point Representations</h3>
+<span id="index-floating_002dpoint-representations"></span>
+<span id="index-representation-of-floating_002dpoint-numbers"></span>
+
+<span id="index-IEEE-754_002d2008-Standard"></span>
+<p>Storing numbers as <em>floating point</em> allows representation of
+numbers with fractional values, in a range larger than that of
+hardware integers.  A floating-point number consists of a sign bit, a
+<em>significand</em> (also called the <em>mantissa</em>), and a power of a
+fixed base.  GNU C uses the floating-point representations specified by
+the <cite>IEEE 754-2008 Standard for Floating-Point Arithmetic</cite>.
+</p>
+<p>The IEEE 754-2008 specification defines basic binary floating-point
+formats of five different sizes: 16-bit, 32-bit, 64-bit, 128-bit, and
+256-bit.  The formats of 32, 64, and 128 bits are used for the
+standard C types <code>float</code>, <code>double</code>, and <code>long double</code>.
+GNU C supports the 16-bit floating point type <code>_Float16</code> on some
+platforms, but does not support the 256-bit floating point type.
+</p>
+<p>Each of the formats encodes the floating-point number as a sign bit.
+After this comes an exponent that specifies a power of 2 (with a fixed
+offset).  Then comes the significand.
+</p>
+<p>The first bit of the significand, before the binary point, is always
+1, so there is no need to store it in memory.  It is called the
+<em>hidden bit</em> because it doesn&rsquo;t appear in the floating-point
+number as used in the computer itself.
+</p>
+<p>All of those floating-point formats are sign-magnitude representations,
+so +0 and -0 are different values.
+</p>
+<p>Besides the IEEE 754 format 128-bit float, GNU C also offers a format
+consisting of a pair of 64-bit floating point numbers.  This lacks the
+full exponent range of the IEEE 128-bit format, but is useful when the
+underlying hardware platform does not support that.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Floating-Type-Specs.html
===================================================================
--- public/doc/gnu-c/Floating-Type-Specs.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Floating-Type-Specs.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,128 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Floating Type Specs (GNU C Language Manual)</title>
+
+<meta name="description" content="Floating Type Specs (GNU C Language Manual)">
+<meta name="keywords" content="Floating Type Specs (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Floating-Point-in-Depth.html" rel="up" title="Floating Point in Depth">
+<link href="Special-Float-Values.html" rel="next" title="Special Float Values">
+<link href="Floating-Representations.html" rel="prev" title="Floating Representations">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Floating-Type-Specs"></span><div class="header">
+<p>
+Next: <a href="Special-Float-Values.html" accesskey="n" rel="next">Special Float Values</a>, Previous: <a href="Floating-Representations.html" accesskey="p" rel="prev">Floating Representations</a>, Up: <a href="Floating-Point-in-Depth.html" accesskey="u" rel="up">Floating Point in Depth</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>
+</div>
+<hr>
+<span id="Floating_002dPoint-Type-Specifications"></span><h3 class="section">28.2 Floating-Point Type Specifications</h3>
+
+<p>The standard library header file <samp>float.h</samp> defines a number of
+constants that describe the platform&rsquo;s implementation of
+floating-point types <code>float</code>, <code>double</code> and <code>long
+double</code>.  They include:
+</p>
+<span id="index-FLT_005fMIN"></span>
+<span id="index-DBL_005fMIN"></span>
+<span id="index-LDBL_005fMIN"></span>
+<span id="index-FLT_005fHAS_005fSUBNORM"></span>
+<span id="index-DBL_005fHAS_005fSUBNORM"></span>
+<span id="index-LDBL_005fHAS_005fSUBNORM"></span>
+<span id="index-FLT_005fTRUE_005fMIN"></span>
+<span id="index-DBL_005fTRUE_005fMIN"></span>
+<span id="index-LDBL_005fTRUE_005fMIN"></span>
+<span id="index-FLT_005fMAX"></span>
+<span id="index-DBL_005fMAX"></span>
+<span id="index-LDBL_005fMAX"></span>
+<span id="index-FLT_005fDECIMAL_005fDIG"></span>
+<span id="index-DBL_005fDECIMAL_005fDIG"></span>
+<span id="index-LDBL_005fDECIMAL_005fDIG"></span>
+
+<dl compact="compact">
+<dt><code>FLT_MIN</code></dt>
+<dt><code>DBL_MIN</code></dt>
+<dt><code>LDBL_MIN</code></dt>
+<dd><p>Defines the minimum normalized positive floating-point values that can
+be represented with the type.
+</p>
+</dd>
+<dt><code>FLT_HAS_SUBNORM</code></dt>
+<dt><code>DBL_HAS_SUBNORM</code></dt>
+<dt><code>LDBL_HAS_SUBNORM</code></dt>
+<dd><p>Defines if the floating-point type supports subnormal (or &ldquo;denormalized&rdquo;)
+numbers or not (see <a href="Special-Float-Values.html#subnormal-numbers">subnormal numbers</a>).
+</p>
+</dd>
+<dt><code>FLT_TRUE_MIN</code></dt>
+<dt><code>DBL_TRUE_MIN</code></dt>
+<dt><code>LDBL_TRUE_MIN</code></dt>
+<dd><p>Defines the minimum positive values (including subnormal values) that
+can be represented with the type.
+</p>
+</dd>
+<dt><code>FLT_MAX</code></dt>
+<dt><code>DBL_MAX</code></dt>
+<dt><code>LDBL_MAX</code></dt>
+<dd><p>Defines the largest values that can be represented with the type.
+</p>
+</dd>
+<dt><code>FLT_DECIMAL_DIG</code></dt>
+<dt><code>DBL_DECIMAL_DIG</code></dt>
+<dt><code>LDBL_DECIMAL_DIG</code></dt>
+<dd><p>Defines the number of decimal digits <code>n</code> such that any
+floating-point number that can be represented in the type can be
+rounded to a floating-point number with <code>n</code> decimal digits, and
+back again, without losing any precision of the value.
+</p></dd>
+</dl>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Floating_002dPoint-Data-Types.html
===================================================================
--- public/doc/gnu-c/Floating_002dPoint-Data-Types.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Floating_002dPoint-Data-Types.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,129 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Floating-Point Data Types (GNU C Language Manual)</title>
+
+<meta name="description" content="Floating-Point Data Types (GNU C Language Manual)">
+<meta name="keywords" content="Floating-Point Data Types (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Primitive-Types.html" rel="up" title="Primitive Types">
+<link href="Complex-Data-Types.html" rel="next" title="Complex Data Types">
+<link href="Integer-Variations.html" rel="prev" title="Integer Variations">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Floating_002dPoint-Data-Types"></span><div class="header">
+<p>
+Next: <a href="Complex-Data-Types.html" accesskey="n" rel="next">Complex Data Types</a>, Previous: <a href="Integer-Types.html" accesskey="p" rel="prev">Integer Types</a>, Up: <a href="Primitive-Types.html" accesskey="u" rel="up">Primitive Types</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>
+</div>
+<hr>
+<span id="Floating_002dPoint-Data-Types-1"></span><h3 class="section">11.2 Floating-Point Data Types</h3>
+<span id="index-floating_002dpoint-types"></span>
+<span id="index-types_002c-floating_002dpoint"></span>
+<span id="index-double"></span>
+<span id="index-float"></span>
+<span id="index-long-double"></span>
+
+<p><em>Floating point</em> is the binary analogue of scientific notation:
+internally it represents a number as a fraction and a binary exponent; the
+value is that fraction multiplied by the specified power of 2.
+</p>
+<p>For instance, to represent 6, the fraction would be 0.75 and the
+exponent would be 3; together they stand for the value <em>0.75 * 2<sup>3</sup></em>,
+meaning 0.75 * 8.  The value 1.5 would use 0.75 as the fraction and 1
+as the exponent.  The value 0.75 would use 0.75 as the fraction and 0
+as the exponent.  The value 0.375 would use 0.75 as the fraction and
+-1 as the exponent.
+</p>
+<p>These binary exponents are used by machine instructions.  You can
+write a floating-point constant this way if you wish, using
+hexadecimal; but normally we write floating-point numbers in decimal.
+See <a href="Floating-Constants.html">Floating Constants</a>.
+</p>
+<p>C has three floating-point data types:
+</p>
+<dl compact="compact">
+<dt><code>double</code></dt>
+<dd><p>&ldquo;Double-precision&rdquo; floating point, which uses 64 bits.  This is the
+normal floating-point type, and modern computers normally do
+their floating-point computations in this type, or some wider type.
+Except when there is a special reason to do otherwise, this is the 
+type to use for floating-point values.
+</p>
+</dd>
+<dt><code>float</code></dt>
+<dd><p>&ldquo;Single-precision&rdquo; floating point, which uses 32 bits.  It is useful
+for floating-point values stored in structures and arrays, to save
+space when the full precision of <code>double</code> is not needed.  In
+addition, single-precision arithmetic is faster on some computers, and
+occasionally that is useful.  But not often&mdash;most programs don&rsquo;t use
+the type <code>float</code>.
+</p>
+<p>C would be cleaner if <code>float</code> were the name of the type we 
+use for most floating-point values; however, for historical reasons,
+that&rsquo;s not so.
+</p>
+</dd>
+<dt><code>long double</code></dt>
+<dd><p>&ldquo;Extended-precision&rdquo; floating point is either 80-bit or 128-bit
+precision, depending on the machine in use.  On some machines, which
+have no floating-point format wider than <code>double</code>, this is
+equivalent to <code>double</code>.
+</p></dd>
+</dl>
+
+<p>Floating-point arithmetic raises many subtle issues.  See <a href="Floating-Point-in-Depth.html">Floating Point in Depth</a>, for more information.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Complex-Data-Types.html" accesskey="n" rel="next">Complex Data Types</a>, Previous: <a href="Integer-Types.html" accesskey="p" rel="prev">Integer Types</a>, Up: <a href="Primitive-Types.html" accesskey="u" rel="up">Primitive Types</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Forward-Function-Declarations.html
===================================================================
--- public/doc/gnu-c/Forward-Function-Declarations.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Forward-Function-Declarations.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,87 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Forward Function Declarations (GNU C Language Manual)</title>
+
+<meta name="description" content="Forward Function Declarations (GNU C Language Manual)">
+<meta name="keywords" content="Forward Function Declarations (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Function-Definitions.html" rel="up" title="Function Definitions">
+<link href="Static-Functions.html" rel="next" title="Static Functions">
+<link href="Function-Parameter-Variables.html" rel="prev" title="Function Parameter Variables">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Forward-Function-Declarations"></span><div class="header">
+<p>
+Next: <a href="Static-Functions.html" accesskey="n" rel="next">Static Functions</a>, Previous: <a href="Function-Parameter-Variables.html" accesskey="p" rel="prev">Function Parameter Variables</a>, Up: <a href="Function-Definitions.html" accesskey="u" rel="up">Function Definitions</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>
+</div>
+<hr>
+<span id="Forward-Function-Declarations-1"></span><h4 class="subsection">22.1.2 Forward Function Declarations</h4>
+<span id="index-forward-function-declarations"></span>
+<span id="index-function-declarations_002c-forward"></span>
+
+<p>The order of the function definitions in the source code makes no
+difference, except that each function needs to be defined or declared
+before code uses it.
+</p>
+<p>The definition of a function also declares its name for the rest of
+the containing scope.  But what if you want to call the function
+before its definition?  To permit that, write a compatible declaration
+of the same function, before the first call.  A declaration that
+prefigures a subsequent definition in this way is called a
+<em>forward declaration</em>.  The function declaration can be at top
+level or within a block, and it applies until the end of the containing
+scope.
+</p>
+<p>See <a href="Function-Declarations.html">Function Declarations</a>, for more information about these
+declarations.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Function-Body.html
===================================================================
--- public/doc/gnu-c/Function-Body.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Function-Body.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,180 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Function Body (GNU C Language Manual)</title>
+
+<meta name="description" content="Function Body (GNU C Language Manual)">
+<meta name="keywords" content="Function Body (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Recursive-Fibonacci.html" rel="up" title="Recursive Fibonacci">
+<link href="Stack.html" rel="next" title="Stack">
+<link href="Function-Header.html" rel="prev" title="Function Header">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Function-Body"></span><div class="header">
+<p>
+Previous: <a href="Function-Header.html" accesskey="p" rel="prev">Function Header</a>, Up: <a href="Recursive-Fibonacci.html" accesskey="u" rel="up">Recursive Fibonacci</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>
+</div>
+<hr>
+<span id="Function-Body-1"></span><h4 class="subsection">1.1.2 Function Body</h4>
+<span id="index-function-body"></span>
+<span id="index-recursion"></span>
+
+<p>The rest of the function definition is called the <em>function body</em>.
+Like every function body, this one starts with &lsquo;<samp>{</samp>&rsquo;, ends with
+&lsquo;<samp>}</samp>&rsquo;, and contains zero or more <em>statements</em> and
+<em>declarations</em>.  Statements specify actions to take, whereas
+declarations define names of variables, functions, and so on.  Each
+statement and each declaration ends with a semicolon (&lsquo;<samp>;</samp>&rsquo;).
+</p>
+<p>Statements and declarations often contain <em>expressions</em>; an
+expression is a construct whose execution produces a <em>value</em> of
+some data type, but may also take actions through &ldquo;side effects&rdquo;
+that alter subsequent execution.  A statement, by contrast, does not
+have a value; it affects further execution of the program only through
+the actions it takes.
+</p>
+<p>This function body contains no declarations, and just one statement,
+but that one is a complex statement in that it contains nested
+statements.  This function uses two kinds of statements:
+</p>
+<dl compact="compact">
+<dt><code>return</code></dt>
+<dd><p>The <code>return</code> statement makes the function return immediately.
+It looks like this:
+</p>
+<div class="example">
+<pre class="example">return <var>value</var>;
+</pre></div>
+
+<p>Its meaning is to compute the expression <var>value</var> and exit the
+function, making it return whatever value that expression produced.
+For instance,
+</p>
+<div class="example">
+<pre class="example">return 1;
+</pre></div>
+
+<p>returns the integer 1 from the function, and
+</p>
+<div class="example">
+<pre class="example">return fib (n - 1) + fib (n - 2);
+</pre></div>
+
+<p>returns a value computed by performing two function calls
+as specified and adding their results.
+</p>
+</dd>
+<dt><code><code>if</code>&hellip;<code>else</code></code></dt>
+<dd><p>The <code>if</code>&hellip;<code>else</code> statement is a <em>conditional</em>.
+Each time it executes, it chooses one of its two substatements to execute
+and ignores the other.  It looks like this:
+</p>
+<div class="example">
+<pre class="example">if (<var>condition</var>)
+  <var>if-true-statement</var>
+else
+  <var>if-false-statement</var>
+</pre></div>
+
+<p>Its meaning is to compute the expression <var>condition</var> and, if it&rsquo;s
+&ldquo;true,&rdquo; execute <var>if-true-statement</var>.  Otherwise, execute
+<var>if-false-statement</var>.  See <a href="if_002delse-Statement.html">if-else Statement</a>.
+</p>
+<p>Inside the <code>if</code>&hellip;<code>else</code> statement, <var>condition</var> is
+simply an expression.  It&rsquo;s considered &ldquo;true&rdquo; if its value is
+nonzero.  (A comparison operation, such as <code>n &lt;= 2</code>, produces the
+value 1 if it&rsquo;s &ldquo;true&rdquo; and 0 if it&rsquo;s &ldquo;false.&rdquo;  See <a href="Numeric-Comparisons.html">Numeric Comparisons</a>.)  Thus,
+</p>
+<div class="example">
+<pre class="example">if (n &lt;= 2)
+  return 1;
+else
+  return fib (n - 1) + fib (n - 2);
+</pre></div>
+
+<p>first tests whether the value of <code>n</code> is less than or equal to 2.
+If so, the expression <code>n &lt;= 2</code> has the value 1.  So execution
+continues with the statement
+</p>
+<div class="example">
+<pre class="example">return 1;
+</pre></div>
+
+<p>Otherwise, execution continues with this statement:
+</p>
+<div class="example">
+<pre class="example">return fib (n - 1) + fib (n - 2);
+</pre></div>
+
+<p>Each of these statements ends the execution of the function and
+provides a value for it to return.  See <a href="return-Statement.html">return Statement</a>.
+</p></dd>
+</dl>
+
+<p>Calculating <code>fib</code> using ordinary integers in C works only for
+<var>n</var> &lt; 47, because the value of <code>fib (47)</code> is too large to fit
+in type <code>int</code>.  The addition operation that tries to add
+<code>fib (46)</code> and <code>fib (45)</code> cannot deliver the correct result.
+This occurrence is called <em>integer overflow</em>.
+</p>
+<p>Overflow can manifest itself in various ways, but one thing that can&rsquo;t
+possibly happen is to produce the correct value, since that can&rsquo;t fit
+in the space for the value.  See <a href="Integer-Overflow.html">Integer Overflow</a>.
+</p>
+<p>See <a href="Functions.html">Functions</a>, for a full explanation about functions.
+</p>
+<hr>
+<div class="header">
+<p>
+Previous: <a href="Function-Header.html" accesskey="p" rel="prev">Function Header</a>, Up: <a href="Recursive-Fibonacci.html" accesskey="u" rel="up">Recursive Fibonacci</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Function-Call-Semantics.html
===================================================================
--- public/doc/gnu-c/Function-Call-Semantics.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Function-Call-Semantics.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,115 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Function Call Semantics (GNU C Language Manual)</title>
+
+<meta name="description" content="Function Call Semantics (GNU C Language Manual)">
+<meta name="keywords" content="Function Call Semantics (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Functions.html" rel="up" title="Functions">
+<link href="Function-Pointers.html" rel="next" title="Function Pointers">
+<link href="Function-Calls.html" rel="prev" title="Function Calls">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Function-Call-Semantics"></span><div class="header">
+<p>
+Next: <a href="Function-Pointers.html" accesskey="n" rel="next">Function Pointers</a>, Previous: <a href="Function-Calls.html" accesskey="p" rel="prev">Function Calls</a>, Up: <a href="Functions.html" accesskey="u" rel="up">Functions</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>
+</div>
+<hr>
+<span id="Function-Call-Semantics-1"></span><h3 class="section">22.4 Function Call Semantics</h3>
+<span id="index-function-call-semantics"></span>
+<span id="index-semantics-of-function-calls"></span>
+<span id="index-call_002dby_002dvalue"></span>
+
+<p>The meaning of a function call is to compute the specified argument
+expressions, convert their values according to the function&rsquo;s
+declaration, then run the function giving it copies of the converted
+values.  (This method of argument passing is known as
+<em>call-by-value</em>.)  When the function finishes, the value it
+returns becomes the value of the function-call expression.
+</p>
+<p>Call-by-value implies that an assignment to the function argument
+variable has no direct effect on the caller.  For instance,
+</p>
+<div class="example">
+<pre class="example">#include &lt;stdlib.h&gt;  /* <span class="roman">Defines <code>EXIT_SUCCESS</code>.</span> */
+#include &lt;stdio.h&gt;   /* <span class="roman">Declares <code>printf</code>.</span> */
+
+void
+subroutine (int x)
+{
+  x = 5;
+}
+
+void
+main (void)
+{
+  int y = 20;
+  subroutine (y);
+  printf (&quot;y is %d\n&quot;, y);
+  return EXIT_SUCCESS;
+}
+</pre></div>
+
+<p>prints &lsquo;<samp>y is 20</samp>&rsquo;.  Calling <code>subroutine</code> initializes <code>x</code>
+from the value of <code>y</code>, but this does not establish any other
+relationship between the two variables.  Thus, the assignment to
+<code>x</code>, inside <code>subroutine</code>, changes only <em>that</em> <code>x</code>.
+</p>
+<p>If an argument&rsquo;s type is specified by the function&rsquo;s declaration, the
+function call converts the argument expression to that type if
+possible.  If the conversion is impossible, that is an error.
+</p>
+<p>If the function&rsquo;s declaration doesn&rsquo;t specify the type of that
+argument, then the <em>default argument promotions</em> apply.
+See <a href="Argument-Promotions.html">Argument Promotions</a>.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Function-Calls.html
===================================================================
--- public/doc/gnu-c/Function-Calls.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Function-Calls.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,104 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Function Calls (GNU C Language Manual)</title>
+
+<meta name="description" content="Function Calls (GNU C Language Manual)">
+<meta name="keywords" content="Function Calls (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Functions.html" rel="up" title="Functions">
+<link href="Function-Call-Semantics.html" rel="next" title="Function Call Semantics">
+<link href="Function-Declarations.html" rel="prev" title="Function Declarations">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Function-Calls"></span><div class="header">
+<p>
+Next: <a href="Function-Call-Semantics.html" accesskey="n" rel="next">Function Call Semantics</a>, Previous: <a href="Function-Declarations.html" accesskey="p" rel="prev">Function Declarations</a>, Up: <a href="Functions.html" accesskey="u" rel="up">Functions</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>
+</div>
+<hr>
+<span id="Function-Calls-1"></span><h3 class="section">22.3 Function Calls</h3>
+<span id="index-function-calls"></span>
+<span id="index-calling-functions"></span>
+
+<p>Starting a program automatically calls the function named <code>main</code>
+(see <a href="The-main-Function.html">The main Function</a>).  Aside from that, a function does nothing
+except when it is <em>called</em>.  That occurs during the execution of a
+function-call expression specifying that function.
+</p>
+<p>A function-call expression looks like this:
+</p>
+<div class="example">
+<pre class="example"><var>function</var> (<var>arguments</var><span class="roman">&hellip;</span>)
+</pre></div>
+
+<p>Most of the time, <var>function</var> is a function name.  However, it can
+also be an expression with a function pointer value; that way, the
+program can determine at run time which function to call.
+</p>
+<p>The <var>arguments</var> are a series of expressions separated by commas.
+Each expression specifies one argument to pass to the function.
+</p>
+<p>The list of arguments in a function call looks just like use of the
+comma operator (see <a href="Comma-Operator.html">Comma Operator</a>), but the fact that it fills
+the parentheses of a function call gives it a different meaning.
+</p>
+<p>Here&rsquo;s an example of a function call, taken from an example near the
+beginning (see <a href="Complete-Program.html">Complete Program</a>).
+</p>
+<div class="example">
+<pre class="example">printf (&quot;Fibonacci series item %d is %d\n&quot;,
+        19, fib (19));
+</pre></div>
+
+<p>The three arguments given to <code>printf</code> are a constant string, the
+integer 19, and the integer returned by <code>fib (19)</code>.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Function-Declarations.html
===================================================================
--- public/doc/gnu-c/Function-Declarations.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Function-Declarations.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,185 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Function Declarations (GNU C Language Manual)</title>
+
+<meta name="description" content="Function Declarations (GNU C Language Manual)">
+<meta name="keywords" content="Function Declarations (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Functions.html" rel="up" title="Functions">
+<link href="Function-Calls.html" rel="next" title="Function Calls">
+<link href="Structs-as-Parameters.html" rel="prev" title="Structs as Parameters">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Function-Declarations"></span><div class="header">
+<p>
+Next: <a href="Function-Calls.html" accesskey="n" rel="next">Function Calls</a>, Previous: <a href="Function-Definitions.html" accesskey="p" rel="prev">Function Definitions</a>, Up: <a href="Functions.html" accesskey="u" rel="up">Functions</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>
+</div>
+<hr>
+<span id="Function-Declarations-1"></span><h3 class="section">22.2 Function Declarations</h3>
+<span id="index-function-declarations"></span>
+<span id="index-declararing-functions"></span>
+
+<p>To call a function, or use its name as a pointer, a <em>function
+declaration</em> for the function name must be in effect at that point in
+the code.  The function&rsquo;s definition serves as a declaration of that
+function for the rest of the containing scope, but to use the function
+in code before the definition, or from another compilation module, a
+separate function declaration must precede the use.
+</p>
+<p>A function declaration looks like the start of a function definition.
+It begins with the return value type (<code>void</code> if none) and the
+function name, followed by argument declarations in parentheses
+(though these can sometimes be omitted).  But that&rsquo;s as far as the
+similarity goes: instead of the function body, the declaration uses a
+semicolon.
+</p>
+<span id="index-function-prototype"></span>
+<span id="index-prototype-of-a-function"></span>
+<p>A declaration that specifies argument types is called a <em>function
+prototype</em>.  You can include the argument names or omit them.  The
+names, if included in the declaration, have no effect, but they may
+serve as documentation.
+</p>
+<p>This form of prototype specifies fixed argument types:
+</p>
+<div class="example">
+<pre class="example"><var>rettype</var> <var>function</var> (<var>argtypes</var><span class="roman">&hellip;</span>);
+</pre></div>
+
+<p>This form says the function takes no arguments:
+</p>
+<div class="example">
+<pre class="example"><var>rettype</var> <var>function</var> (void);
+</pre></div>
+
+<p>This form declares types for some arguments, and allows additional
+arguments whose types are not specified:
+</p>
+<div class="example">
+<pre class="example"><var>rettype</var> <var>function</var> (<var>argtypes</var><span class="roman">&hellip;</span>, ...);
+</pre></div>
+
+<p>For a parameter that&rsquo;s an array of variable length, you can write
+its declaration with &lsquo;<samp>*</samp>&rsquo; where the &ldquo;length&rdquo; of the array would
+normally go; for example, these are all equivalent.
+</p>
+<div class="example">
+<pre class="example">double maximum (int n, int m, double a[n][m]);
+double maximum (int n, int m, double a[*][*]);
+double maximum (int n, int m, double a[ ][*]);
+double maximum (int n, int m, double a[ ][m]);
+</pre></div>
+
+<p>The old-fashioned form of declaration, which is not a prototype, says
+nothing about the types of arguments or how many they should be:
+</p>
+<div class="example">
+<pre class="example"><var>rettype</var> <var>function</var> ();
+</pre></div>
+
+<p><strong>Warning:</strong> Arguments passed to a function declared without a
+prototype are converted with the default argument promotions
+(see <a href="Argument-Promotions.html">Argument Promotions</a>.  Likewise for additional arguments whose
+types are unspecified.
+</p>
+<p>Function declarations are usually written at the top level in a source file,
+but you can also put them inside code blocks.  Then the function name
+is visible for the rest of the containing scope.  For example:
+</p>
+<div class="example">
+<pre class="example">void
+foo (char *file_name)
+{
+  void save_file (char *);
+  save_file (file_name);
+}
+</pre></div>
+
+<p>If another part of the code tries to call the function
+<code>save_file</code>, this declaration won&rsquo;t be in effect there.  So the
+function will get an implicit declaration of the form <code>extern int
+save_file ();</code>.   That conflicts with the explicit declaration
+here, and the discrepancy generates a warning.
+</p>
+<p>The syntax of C traditionally allows omitting the data type in a
+function declaration if it specifies a storage class or a qualifier.
+Then the type defaults to <code>int</code>.  For example:
+</p>
+<div class="example">
+<pre class="example">static foo (double x);
+</pre></div>
+
+<p>defaults the return type to <code>int</code>.
+This is bad practice; if you see it, fix it.
+</p>
+<p>Calling a function that is undeclared has the effect of an creating
+<em>implicit</em> declaration in the innermost containing scope,
+equivalent to this:
+</p>
+<div class="example">
+<pre class="example">extern int <em>function</em> ();
+</pre></div>
+
+<p>This declaration says that the function returns <code>int</code> but leaves
+its argument types unspecified.  If that does not accurately fit the
+function, then the program <strong>needs</strong> an explicit declaration of
+the function with argument types in order to call it correctly.
+</p>
+<p>Implicit declarations are deprecated, and a function call that creates one
+causes a warning.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Function-Calls.html" accesskey="n" rel="next">Function Calls</a>, Previous: <a href="Function-Definitions.html" accesskey="p" rel="prev">Function Definitions</a>, Up: <a href="Functions.html" accesskey="u" rel="up">Functions</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Function-Definitions.html
===================================================================
--- public/doc/gnu-c/Function-Definitions.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Function-Definitions.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,102 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Function Definitions (GNU C Language Manual)</title>
+
+<meta name="description" content="Function Definitions (GNU C Language Manual)">
+<meta name="keywords" content="Function Definitions (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Functions.html" rel="up" title="Functions">
+<link href="Function-Parameter-Variables.html" rel="next" title="Function Parameter Variables">
+<link href="Functions.html" rel="prev" title="Functions">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Function-Definitions"></span><div class="header">
+<p>
+Next: <a href="Function-Declarations.html" accesskey="n" rel="next">Function Declarations</a>, Up: <a href="Functions.html" accesskey="u" rel="up">Functions</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>
+</div>
+<hr>
+<span id="Function-Definitions-1"></span><h3 class="section">22.1 Function Definitions</h3>
+<span id="index-function-definitions"></span>
+<span id="index-defining-functions"></span>
+
+<p>We have already presented many examples of function definitions.  To
+summarize the rules, a function definition looks like this:
+</p>
+<div class="example">
+<pre class="example"><var>returntype</var>
+<var>functionname</var> (<var>parm_declarations</var><span class="roman">&hellip;</span>)
+{
+  <var>body</var>
+}
+</pre></div>
+
+<p>The part before the open-brace is called the <em>function header</em>.
+</p>
+<p>Write <code>void</code> as the <var>returntype</var> if the function does
+not return a value.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Function-Parameter-Variables.html" accesskey="1">Function Parameter Variables</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Syntax and semantics
+                                       of function parameters.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Forward-Function-Declarations.html" accesskey="2">Forward Function Declarations</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Functions can only be called after
+                                       they have been defined or declared.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Static-Functions.html" accesskey="3">Static Functions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Limiting visibility of a function.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Arrays-as-Parameters.html" accesskey="4">Arrays as Parameters</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Functions that accept array arguments.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Structs-as-Parameters.html" accesskey="5">Structs as Parameters</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Functions that accept structure arguments.
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Function-Header.html
===================================================================
--- public/doc/gnu-c/Function-Header.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Function-Header.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,83 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Function Header (GNU C Language Manual)</title>
+
+<meta name="description" content="Function Header (GNU C Language Manual)">
+<meta name="keywords" content="Function Header (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Recursive-Fibonacci.html" rel="up" title="Recursive Fibonacci">
+<link href="Function-Body.html" rel="next" title="Function Body">
+<link href="Recursive-Fibonacci.html" rel="prev" title="Recursive Fibonacci">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Function-Header"></span><div class="header">
+<p>
+Next: <a href="Function-Body.html" accesskey="n" rel="next">Function Body</a>, Up: <a href="Recursive-Fibonacci.html" accesskey="u" rel="up">Recursive Fibonacci</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>
+</div>
+<hr>
+<span id="Function-Header-1"></span><h4 class="subsection">1.1.1 Function Header</h4>
+<span id="index-function-header"></span>
+
+<p>In our example, the first two lines of the function definition are the
+<em>header</em>.  Its purpose is to state the function&rsquo;s name and say how
+it is called:
+</p>
+<div class="example">
+<pre class="example">int
+fib (int n)
+</pre></div>
+
+<p>says that the function returns an integer (type <code>int</code>), its name is
+<code>fib</code>, and it takes one argument named <code>n</code> which is also an
+integer.  (Data types will be explained later, in <a href="Primitive-Types.html">Primitive Types</a>.)
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Function-Parameter-Variables.html
===================================================================
--- public/doc/gnu-c/Function-Parameter-Variables.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Function-Parameter-Variables.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,171 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Function Parameter Variables (GNU C Language Manual)</title>
+
+<meta name="description" content="Function Parameter Variables (GNU C Language Manual)">
+<meta name="keywords" content="Function Parameter Variables (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Function-Definitions.html" rel="up" title="Function Definitions">
+<link href="Forward-Function-Declarations.html" rel="next" title="Forward Function Declarations">
+<link href="Function-Definitions.html" rel="prev" title="Function Definitions">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Function-Parameter-Variables"></span><div class="header">
+<p>
+Next: <a href="Forward-Function-Declarations.html" accesskey="n" rel="next">Forward Function Declarations</a>, Up: <a href="Function-Definitions.html" accesskey="u" rel="up">Function Definitions</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>
+</div>
+<hr>
+<span id="Function-Parameter-Variables-1"></span><h4 class="subsection">22.1.1 Function Parameter Variables</h4>
+<span id="index-function-parameter-variables"></span>
+<span id="index-parameter-variables-in-functions"></span>
+<span id="index-parameter-list"></span>
+
+<p>A function parameter variable is a local variable (see <a href="Local-Variables.html">Local Variables</a>) used within the function to store the value passed as an
+argument in a call to the function.  Usually we say &ldquo;function
+parameter&rdquo; or &ldquo;parameter&rdquo; for short, not mentioning the fact that
+it&rsquo;s a variable.
+</p>
+<p>We declare these variables in the beginning of the function
+definition, in the <em>parameter list</em>.  For example,
+</p>
+<div class="example">
+<pre class="example">fib (int n)
+</pre></div>
+
+<p>has a parameter list with one function parameter <code>n</code>, which has
+type <code>int</code>.
+</p>
+<p>Function parameter declarations differ from ordinary variable
+declarations in several ways:
+</p>
+<ul>
+<li> Inside the function definition header, commas separate parameter
+declarations, and each parameter needs a complete declaration
+including the type.  For instance, if a function <code>foo</code> has two
+<code>int</code> parameters, write this:
+
+<div class="example">
+<pre class="example">foo (int a, int b)
+</pre></div>
+
+<p>You can&rsquo;t share the common <code>int</code> between the two declarations:
+</p>
+<div class="example">
+<pre class="example">foo (int a, b)      /* <span class="roman">Invalid!</span> */
+</pre></div>
+
+</li><li> A function parameter variable is initialized to whatever value is
+passed in the function call, so its declaration cannot specify an
+initial value.
+
+</li><li> Writing an array type in a function parameter declaration has the
+effect of declaring it as a pointer.  The size specified for the array
+has no effect at all, and we normally omit the size.  Thus,
+
+<div class="example">
+<pre class="example">foo (int a[5])
+foo (int a[])
+foo (int *a)
+</pre></div>
+
+<p>are equivalent.
+</p>
+</li><li> The scope of the parameter variables is the entire function body,
+notwithstanding the fact that they are written in the function header,
+which is just outside the function body.
+</li></ul>
+
+<p>If a function has no parameters, it would be most natural for the
+list of parameters in its definition to be empty.  But that, in C, has
+a special meaning for historical reasons: &ldquo;Do not check that calls to
+this function have the right number of arguments.&rdquo;  Thus,
+</p>
+<div class="example">
+<pre class="example">int
+foo ()
+{
+  return 5;
+}
+
+int
+bar (int x)
+{
+  return foo (x);
+}
+</pre></div>
+
+<p>would not report a compilation error in passing <code>x</code> as an
+argument to <code>foo</code>.  By contrast,
+</p>
+<div class="example">
+<pre class="example">int
+foo (void)
+{
+  return 5;
+}
+
+int
+bar (int x)
+{
+  return foo (x);
+}
+</pre></div>
+
+<p>would report an error because <code>foo</code> is supposed to receive
+no arguments.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Forward-Function-Declarations.html" accesskey="n" rel="next">Forward Function Declarations</a>, Up: <a href="Function-Definitions.html" accesskey="u" rel="up">Function Definitions</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Function-Pointers.html
===================================================================
--- public/doc/gnu-c/Function-Pointers.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Function-Pointers.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,92 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Function Pointers (GNU C Language Manual)</title>
+
+<meta name="description" content="Function Pointers (GNU C Language Manual)">
+<meta name="keywords" content="Function Pointers (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Functions.html" rel="up" title="Functions">
+<link href="Declaring-Function-Pointers.html" rel="next" title="Declaring Function Pointers">
+<link href="Function-Call-Semantics.html" rel="prev" title="Function Call Semantics">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Function-Pointers"></span><div class="header">
+<p>
+Next: <a href="The-main-Function.html" accesskey="n" rel="next">The main Function</a>, Previous: <a href="Function-Call-Semantics.html" accesskey="p" rel="prev">Function Call Semantics</a>, Up: <a href="Functions.html" accesskey="u" rel="up">Functions</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>
+</div>
+<hr>
+<span id="Function-Pointers-1"></span><h3 class="section">22.5 Function Pointers</h3>
+<span id="index-function-pointers"></span>
+<span id="index-pointers-to-functions"></span>
+
+<p>A function name refers to a fixed function.  Sometimes it is useful to
+call a function to be determined at run time; to do this, you can use
+a <em>function pointer value</em> that points to the chosen function
+(see <a href="Pointers.html">Pointers</a>).
+</p>
+<p>Pointer-to-function types can be used to declare variables and other
+data, including array elements, structure fields, and union
+alternatives.  They can also be used for function arguments and return
+values.  These types have the peculiarity that they are never
+converted automatically to <code>void *</code> or vice versa.  However, you
+can do that conversion with a cast.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Declaring-Function-Pointers.html" accesskey="1">Declaring Function Pointers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to declare a pointer to a function.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Assigning-Function-Pointers.html" accesskey="2">Assigning Function Pointers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to assign values to function pointers.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Calling-Function-Pointers.html" accesskey="3">Calling Function Pointers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to call functions through pointers.
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Function_002dlike-Macros.html
===================================================================
--- public/doc/gnu-c/Function_002dlike-Macros.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Function_002dlike-Macros.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,126 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Function-like Macros (GNU C Language Manual)</title>
+
+<meta name="description" content="Function-like Macros (GNU C Language Manual)">
+<meta name="keywords" content="Function-like Macros (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Macros.html" rel="up" title="Macros">
+<link href="Macro-Arguments.html" rel="next" title="Macro Arguments">
+<link href="Object_002dlike-Macros.html" rel="prev" title="Object-like Macros">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Function_002dlike-Macros"></span><div class="header">
+<p>
+Next: <a href="Macro-Arguments.html" accesskey="n" rel="next">Macro Arguments</a>, Previous: <a href="Object_002dlike-Macros.html" accesskey="p" rel="prev">Object-like Macros</a>, Up: <a href="Macros.html" accesskey="u" rel="up">Macros</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>
+</div>
+<hr>
+<span id="Function_002dlike-Macros-1"></span><h4 class="subsection">26.5.2 Function-like Macros</h4>
+<span id="index-function_002dlike-macros"></span>
+
+<p>You can also define macros whose use looks like a function call.
+These are called <em>function-like macros</em>.  To define one, use the
+<code>#define</code> directive with a pair of parentheses immediately after
+the macro name.  For example,
+</p>
+<div class="example">
+<pre class="example">#define lang_init()  c_init()
+lang_init()
+     &rarr; c_init()
+</pre></div>
+
+<p>A function-like macro is expanded only when its name appears with a
+pair of parentheses after it.  If you write just the name, without
+parentheses, it is left alone.  This can be useful when you have a
+function and a macro of the same name, and you wish to use the
+function sometimes.  Whitespace and line breaks before or between the
+parentheses are ignored when the macro is called.
+</p>
+<div class="example">
+<pre class="example">extern void foo(void);
+#define foo() /* <span class="roman">optimized inline version</span> */
+/* <span class="roman">&hellip;</span> */
+  foo();
+  funcptr = foo;
+</pre></div>
+
+<p>Here the call to <code>foo()</code> expands the macro, but the function
+pointer <code>funcptr</code> gets the address of the real function
+<code>foo</code>.  If the macro were to be expanded there, it would cause a
+syntax error.
+</p>
+<p>If you put spaces between the macro name and the parentheses in the
+macro definition, that does not define a function-like macro, it defines
+an object-like macro whose expansion happens to begin with a pair of
+parentheses.  Here is an example:
+</p>
+<div class="example">
+<pre class="example">#define lang_init ()    c_init()
+lang_init()
+     &rarr; () c_init()()
+</pre></div>
+
+<p>The first two pairs of parentheses in this expansion come from the
+macro.  The third is the pair that was originally after the macro
+invocation.  Since <code>lang_init</code> is an object-like macro, it does not
+consume those parentheses.
+</p>
+<p>Any name can have at most one macro definition at a time.  Thus,
+you can&rsquo;t define the same name as an object-like macro and a
+function-like macro at once.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Macro-Arguments.html" accesskey="n" rel="next">Macro Arguments</a>, Previous: <a href="Object_002dlike-Macros.html" accesskey="p" rel="prev">Object-like Macros</a>, Up: <a href="Macros.html" accesskey="u" rel="up">Macros</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Functions.html
===================================================================
--- public/doc/gnu-c/Functions.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Functions.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,95 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Functions (GNU C Language Manual)</title>
+
+<meta name="description" content="Functions (GNU C Language Manual)">
+<meta name="keywords" content="Functions (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html" rel="up" title="Top">
+<link href="Function-Definitions.html" rel="next" title="Function Definitions">
+<link href="restrict-Pointer-Example.html" rel="prev" title="restrict Pointer Example">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Functions"></span><div class="header">
+<p>
+Next: <a href="Compatible-Types.html" accesskey="n" rel="next">Compatible Types</a>, Previous: <a href="Type-Qualifiers.html" accesskey="p" rel="prev">Type Qualifiers</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</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>
+</div>
+<hr>
+<span id="Functions-1"></span><h2 class="chapter">22 Functions</h2>
+<span id="index-functions"></span>
+
+<p>We have already presented many examples of functions, so if you&rsquo;ve
+read this far, you basically understand the concept of a function.  It
+is vital, nonetheless, to have a chapter in the manual that collects
+all the information about functions.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Function-Definitions.html" accesskey="1">Function Definitions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Writing the body of a function.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Function-Declarations.html" accesskey="2">Function Declarations</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Declaring the interface of a function.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Function-Calls.html" accesskey="3">Function Calls</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Using functions.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Function-Call-Semantics.html" accesskey="4">Function Call Semantics</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Call-by-value argument passing.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Function-Pointers.html" accesskey="5">Function Pointers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Using references to functions.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="The-main-Function.html" accesskey="6">The main Function</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Where execution of a GNU C program begins.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Advanced-Definitions.html" accesskey="7">Advanced Definitions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Advanced features of function definitions.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Obsolete-Definitions.html" accesskey="8">Obsolete Definitions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Obsolete features still used
+                                   in function definitions in old code.
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Further-Reading.html
===================================================================
--- public/doc/gnu-c/Further-Reading.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Further-Reading.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,233 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Further Reading (GNU C Language Manual)</title>
+
+<meta name="description" content="Further Reading (GNU C Language Manual)">
+<meta name="keywords" content="Further Reading (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Floating-Point-in-Depth.html" rel="up" title="Floating Point in Depth">
+<link href="Compilation.html" rel="next" title="Compilation">
+<link href="Round_002dTrip-Base-Conversion.html" rel="prev" title="Round-Trip Base Conversion">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Further-Reading"></span><div class="header">
+<p>
+Previous: <a href="Round_002dTrip-Base-Conversion.html" accesskey="p" rel="prev">Round-Trip Base Conversion</a>, Up: <a href="Floating-Point-in-Depth.html" accesskey="u" rel="up">Floating Point in Depth</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>
+</div>
+<hr>
+<span id="Further-Reading-1"></span><h3 class="section">28.21 Further Reading</h3>
+
+<p>The subject of floating-point arithmetic is much more complex
+than many programmers seem to think, and few books on programming
+languages spend much time in that area.  In this chapter, we have
+tried to expose the reader to some of the key ideas, and to warn
+of easily overlooked pitfalls that can soon lead to nonsensical
+results.  There are a few good references that we recommend
+for further reading, and for finding other important material
+about computer arithmetic:
+</p>
+
+<ul>
+<li> Paul H. Abbott and 15 others, <cite>Architecture and software support
+in IBM S/390 Parallel Enterprise Servers for IEEE Floating-Point
+arithmetic</cite>, IBM Journal of Research and Development <b>43</b>(5/6)
+723&ndash;760 (1999),
+<a href="https://doi.org/10.1147/rd.435.0723">https://doi.org/10.1147/rd.435.0723</a>. This article gives
+a good description of IBM&rsquo;s algorithm for exact decimal-to-binary
+conversion, complementing earlier ones by Clinger and others.
+
+</li><li> Nelson H. F. Beebe, <cite>The Mathematical-Function Computation Handbook:
+Programming Using the MathCW Portable Software Library</cite>,
+Springer (2017), ISBN 3-319-64109-3 (hardcover), 3-319-64110-7 (e-book)
+(xxxvi + 1114 pages),
+<a href="https://doi.org/10.1007/978-3-319-64110-2">https://doi.org/10.1007/978-3-319-64110-2</a>.
+This book describes portable implementations of a large superset
+of the mathematical functions available in many programming
+languages, extended to a future 256-bit format (70 decimal
+digits), for both binary and decimal floating point.  It includes
+a substantial portion of the functions described in the famous
+<cite>NIST Handbook of Mathematical Functions</cite>, Cambridge (2018),
+ISBN 0-521-19225-0.
+See
+<a href="http://www.math.utah.edu/pub/mathcw">http://www.math.utah.edu/pub/mathcw</a>
+for compilers and libraries.
+
+</li><li> William D. Clinger, <cite>How to Read Floating Point Numbers
+Accurately</cite>,  ACM SIGPLAN Notices <b>25</b>(6) 92&ndash;101 (June 1990),
+<a href="https://doi.org/10.1145/93548.93557">https://doi.org/10.1145/93548.93557</a>.
+See also the papers by Steele &amp; White.
+
+</li><li> William D. Clinger, <cite>Retrospective: How to read floating
+point numbers accurately</cite>, ACM SIGPLAN Notices <b>39</b>(4) 360&ndash;371 (April 2004),
+<a href="http://doi.acm.org/10.1145/989393.989430">http://doi.acm.org/10.1145/989393.989430</a>.  Reprint of 1990 paper,
+with additional commentary.
+
+</li><li> I. Bennett Goldberg, <cite>27  Bits Are Not Enough For 8-Digit Accuracy</cite>,
+Communications of the ACM <b>10</b>(2) 105&ndash;106 (February 1967),
+<a href="http://doi.acm.org/10.1145/363067.363112">http://doi.acm.org/10.1145/363067.363112</a>.  This paper,
+and its companions by David Matula, address the base-conversion
+problem, and show that the naive formulas are wrong by one or
+two digits.
+
+</li><li> David Goldberg, <cite>What Every Computer Scientist Should Know
+About Floating-Point Arithmetic</cite>, ACM Computing Surveys <b>23</b>(1)
+5&ndash;58 (March 1991), corrigendum <b>23</b>(3) 413 (September 1991),
+<a href="https://doi.org/10.1145/103162.103163">https://doi.org/10.1145/103162.103163</a>.
+This paper has been widely distributed, and reissued in vendor
+programming-language documentation.  It is well worth reading,
+and then rereading from time to time.
+
+</li><li> Norbert Juffa and Nelson H. F. Beebe, <cite>A Bibliography of
+Publications on Floating-Point Arithmetic</cite>,
+<a href="http://www.math.utah.edu/pub/tex/bib/fparith.bib">http://www.math.utah.edu/pub/tex/bib/fparith.bib</a>.
+This is the largest known bibliography of publications about
+floating-point, and also integer, arithmetic.  It is actively
+maintained, and in mid 2019, contains more than 6400 references to
+original research papers, reports, theses, books, and Web sites on the
+subject matter.  It can be used to locate the latest research in the
+field, and the historical coverage dates back to a 1726 paper on
+signed-digit arithmetic, and an 1837 paper by Charles Babbage, the
+intellectual father of mechanical computers.  The entries for the
+Abbott, Clinger, and Steele &amp; White papers cited earlier contain
+pointers to several other important related papers on the
+base-conversion problem.
+
+</li><li> William Kahan, <cite>Branch Cuts for Complex Elementary Functions, or
+Much Ado About Nothing&rsquo;s Sign Bit</cite>, (1987),
+<a href="http://people.freebsd.org/~das/kahan86branch.pdf">http://people.freebsd.org/~das/kahan86branch.pdf</a>.
+This Web document about the fine points of complex arithmetic
+also appears in the volume edited by A. Iserles and
+M. J. D. Powell, <cite>The State of the Art in Numerical
+Analysis: Proceedings of the Joint IMA/SIAM Conference on the
+State of the Art in Numerical Analysis held at the University of
+Birmingham, 14&ndash;18 April 1986</cite>, Oxford University Press (1987),
+ISBN 0-19-853614-3 (xiv + 719 pages).  Its author is the famous
+chief architect of the IEEE 754 arithmetic system, and one of the
+world&rsquo;s greatest experts in the field of floating-point
+arithmetic.  An entire generation of his students at the
+University of California, Berkeley, have gone on to careers in
+academic and industry, spreading the knowledge of how to do
+floating-point arithmetic right.
+
+</li><li> Donald E. Knuth, <cite>A Simple Program Whose Proof Isn&rsquo;t</cite>,
+in <cite>Beauty is our business: a birthday salute to Edsger
+W. Dijkstra</cite>, W. H. J. Feijen, A. J. M. van Gasteren,
+D. Gries, and J. Misra (eds.), Springer (1990), ISBN
+1-4612-8792-8,
+<a href="https://doi.org/10.1007/978-1-4612-4476-9">https://doi.org/10.1007/978-1-4612-4476-9</a>.  This book
+chapter supplies a correctness proof of the decimal to
+binary, and binary to decimal, conversions in fixed-point
+arithmetic in the TeX typesetting system.  The proof evaded
+its author for a dozen years.
+
+</li><li> David W. Matula, <cite>In-and-out conversions</cite>,
+Communications of the ACM <b>11</b>(1) 57&ndash;50 (January 1968),
+<a href="https://doi.org/10.1145/362851.362887">https://doi.org/10.1145/362851.362887</a>.
+
+</li><li> David W. Matula, <cite>The Base Conversion Theorem</cite>,
+Proceedings of the American Mathematical Society <b>19</b>(3)
+716&ndash;723 (June 1968).  See also other papers here by this author,
+and by I. Bennett Goldberg.
+
+</li><li> David W. Matula, <cite>A Formalization of Floating-Point Numeric
+Base Conversion</cite>, IEEE Transactions on Computers <b>C-19</b>(8)
+681&ndash;692 (August 1970),
+<a href="https://doi.org/10.1109/T-C.1970.223017">https://doi.org/10.1109/T-C.1970.223017</a>.
+
+</li><li> Jean-Michel Muller and eight others, <cite>Handbook of
+Floating-Point Arithmetic</cite>, Birkh&auml;user-Boston (2010), ISBN
+0-8176-4704-X (xxiii + 572 pages),
+<a href="https://doi.org/10.1007/978-0-8176-4704-9">https://doi.org/10.1007/978-0-8176-4704-9</a>.  This is a
+comprehensive treatise from a French team who are among the
+world&rsquo;s greatest experts in floating-point arithmetic, and among
+the most prolific writers of research papers in that field.  They
+have much to teach, and their book deserves a place on the
+shelves of every serious numerical programmer.
+
+</li><li> Jean-Michel Muller and eight others, <cite>Handbook of
+Floating-Point Arithmetic</cite>, Second edition, Birkh&auml;user-Boston (2018), ISBN
+3-319-76525-6 (xxv + 627 pages),
+<a href="https://doi.org/10.1007/978-3-319-76526-6">https://doi.org/10.1007/978-3-319-76526-6</a>.  This is a new
+edition of the preceding entry.
+
+</li><li> Michael Overton, <cite>Numerical Computing with IEEE Floating
+Point Arithmetic, Including One Theorem, One Rule of Thumb, and
+One Hundred and One Exercises</cite>, SIAM (2001), ISBN 0-89871-482-6
+(xiv + 104 pages),
+<a href="http://www.ec-securehost.com/SIAM/ot76.html">http://www.ec-securehost.com/SIAM/ot76.html</a>.
+This is a small volume that can be covered in a few hours.
+
+</li><li> Guy L. Steele Jr. and Jon L. White, <cite>How to Print
+Floating-Point Numbers Accurately</cite>, ACM SIGPLAN Notices
+<b>25</b>(6) 112&ndash;126 (June 1990),
+<a href="https://doi.org/10.1145/93548.93559">https://doi.org/10.1145/93548.93559</a>.
+See also the papers by Clinger.
+
+</li><li> Guy L. Steele Jr. and Jon L. White, <cite>Retrospective: How to
+Print Floating-Point Numbers Accurately</cite>, ACM SIGPLAN Notices
+<b>39</b>(4) 372&ndash;389 (April 2004),
+<a href="http://doi.acm.org/10.1145/989393.989431">http://doi.acm.org/10.1145/989393.989431</a>.  Reprint of 1990
+paper, with additional commentary.
+
+</li><li> Pat H. Sterbenz, <cite>Floating Point Computation</cite>, Prentice-Hall
+(1974), ISBN 0-13-322495-3 (xiv + 316 pages).  This often-cited book
+provides solid coverage of what floating-point arithmetic was like
+<em>before</em> the introduction of IEEE 754 arithmetic.
+
+</li></ul>
+
+<hr>
+<div class="header">
+<p>
+Previous: <a href="Round_002dTrip-Base-Conversion.html" accesskey="p" rel="prev">Round-Trip Base Conversion</a>, Up: <a href="Floating-Point-in-Depth.html" accesskey="u" rel="up">Floating Point in Depth</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Fused-Multiply_002dAdd.html
===================================================================
--- public/doc/gnu-c/Fused-Multiply_002dAdd.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Fused-Multiply_002dAdd.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,112 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Fused Multiply-Add (GNU C Language Manual)</title>
+
+<meta name="description" content="Fused Multiply-Add (GNU C Language Manual)">
+<meta name="keywords" content="Fused Multiply-Add (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Floating-Point-in-Depth.html" rel="up" title="Floating Point in Depth">
+<link href="Error-Recovery.html" rel="next" title="Error Recovery">
+<link href="Significance-Loss.html" rel="prev" title="Significance Loss">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Fused-Multiply_002dAdd"></span><div class="header">
+<p>
+Next: <a href="Error-Recovery.html" accesskey="n" rel="next">Error Recovery</a>, Previous: <a href="Significance-Loss.html" accesskey="p" rel="prev">Significance Loss</a>, Up: <a href="Floating-Point-in-Depth.html" accesskey="u" rel="up">Floating Point in Depth</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>
+</div>
+<hr>
+<span id="Fused-Multiply_002dAdd-1"></span><h3 class="section">28.10 Fused Multiply-Add</h3>
+<span id="index-fused-multiply_002dadd-in-floating_002dpoint-computations"></span>
+<span id="index-floating_002dpoint-fused-multiply_002dadd"></span>
+
+<p>In 1990, when IBM introduced the POWER architecture, the CPU
+provided a previously unknown instruction, the <em>fused
+multiply-add</em> (FMA).  It computes the value <code>x * y + z</code> with
+an <strong>exact</strong> double-length product, followed by an addition with a
+<em>single</em> rounding.  Numerical computation often needs pairs of
+multiply and add operations, for which the FMA is well-suited.
+</p>
+<p>On the POWER architecture, there are two dedicated registers that
+hold permanent values of <code>0.0</code> and <code>1.0</code>, and the
+normal <em>multiply</em> and <em>add</em> instructions are just
+wrappers around the FMA that compute <code>x * y + 0.0</code> and
+<code>x * 1.0 + z</code>, respectively.
+</p>
+<p>In the early days, it appeared that the main benefit of the FMA
+was getting two floating-point operations for the price of one,
+almost doubling the performance of some algorithms.  However,
+numerical analysts have since shown numerous uses of the FMA for
+significantly enhancing accuracy.  We discuss one of the most
+important ones in the next section.
+</p>
+<p>A few other architectures have since included the FMA, and most
+provide variants for the related operations <code>x * y - z</code>
+(FMS), <code>-x * y + z</code> (FNMA), and <code>-x * y - z</code> (FNMS).
+</p>
+<p>The functions <code>fmaf</code>, <code>fma</code>, and <code>fmal</code> implement fused
+multiply-add for the <code>float</code>, <code>double</code>, and <code>long
+double</code> data types.  Correct implementation of the FMA in software is
+difficult, and some systems that appear to provide those functions do
+not satisfy the single-rounding requirement.  That situation should
+change as more programmers use the FMA operation, and more CPUs
+provide FMA in hardware.
+</p>
+<p>Use the <samp>-ffp-contract=fast</samp> option to allow generation of FMA
+instructions, or <samp>-ffp-contract=off</samp> to disallow it.
+</p>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Error-Recovery.html" accesskey="n" rel="next">Error Recovery</a>, Previous: <a href="Significance-Loss.html" accesskey="p" rel="prev">Significance Loss</a>, Up: <a href="Floating-Point-in-Depth.html" accesskey="u" rel="up">Floating Point in Depth</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/GNU-Free-Documentation-License.html
===================================================================
--- public/doc/gnu-c/GNU-Free-Documentation-License.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/GNU-Free-Documentation-License.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,542 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>GNU Free Documentation License (GNU C Language Manual)</title>
+
+<meta name="description" content="GNU Free Documentation License (GNU C Language Manual)">
+<meta name="keywords" content="GNU Free Documentation License (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html" rel="up" title="Top">
+<link href="Symbol-Index.html" rel="next" title="Symbol Index">
+<link href="Signals.html" rel="prev" title="Signals">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="GNU-Free-Documentation-License"></span><div class="header">
+<p>
+Next: <a href="Symbol-Index.html" accesskey="n" rel="next">Symbol Index</a>, Previous: <a href="Signals.html" accesskey="p" rel="prev">Signals</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</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>
+</div>
+<hr>
+<span id="GNU-Free-Documentation-License-1"></span><h2 class="appendix">Appendix F GNU Free Documentation License</h2>
+
+<div align="center">Version 1.3, 3 November 2008
+</div>
+
+<div class="display">
+<pre class="display">Copyright &copy; 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
+<a href="http://fsf.org/">http://fsf.org/</a>
+
+Everyone is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed.
+</pre></div>
+
+<ol start="0">
+<li> PREAMBLE
+
+<p>The purpose of this License is to make a manual, textbook, or other
+functional and useful document <em>free</em> in the sense of freedom: to
+assure everyone the effective freedom to copy and redistribute it,
+with or without modifying it, either commercially or noncommercially.
+Secondarily, this License preserves for the author and publisher a way
+to get credit for their work, while not being considered responsible
+for modifications made by others.
+</p>
+<p>This License is a kind of &ldquo;copyleft&rdquo;, which means that derivative
+works of the document must themselves be free in the same sense.  It
+complements the GNU General Public License, which is a copyleft
+license designed for free software.
+</p>
+<p>We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free
+program should come with manuals providing the same freedoms that the
+software does.  But this License is not limited to software manuals;
+it can be used for any textual work, regardless of subject matter or
+whether it is published as a printed book.  We recommend this License
+principally for works whose purpose is instruction or reference.
+</p>
+</li><li> APPLICABILITY AND DEFINITIONS
+
+<p>This License applies to any manual or other work, in any medium, that
+contains a notice placed by the copyright holder saying it can be
+distributed under the terms of this License.  Such a notice grants a
+world-wide, royalty-free license, unlimited in duration, to use that
+work under the conditions stated herein.  The &ldquo;Document&rdquo;, below,
+refers to any such manual or work.  Any member of the public is a
+licensee, and is addressed as &ldquo;you&rdquo;.  You accept the license if you
+copy, modify or distribute the work in a way requiring permission
+under copyright law.
+</p>
+<p>A &ldquo;Modified Version&rdquo; of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+</p>
+<p>A &ldquo;Secondary Section&rdquo; is a named appendix or a front-matter section
+of the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document&rsquo;s overall
+subject (or to related matters) and contains nothing that could fall
+directly within that overall subject.  (Thus, if the Document is in
+part a textbook of mathematics, a Secondary Section may not explain
+any mathematics.)  The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding
+them.
+</p>
+<p>The &ldquo;Invariant Sections&rdquo; are certain Secondary Sections whose titles
+are designated, as being those of Invariant Sections, in the notice
+that says that the Document is released under this License.  If a
+section does not fit the above definition of Secondary then it is not
+allowed to be designated as Invariant.  The Document may contain zero
+Invariant Sections.  If the Document does not identify any Invariant
+Sections then there are none.
+</p>
+<p>The &ldquo;Cover Texts&rdquo; are certain short passages of text that are listed,
+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+the Document is released under this License.  A Front-Cover Text may
+be at most 5 words, and a Back-Cover Text may be at most 25 words.
+</p>
+<p>A &ldquo;Transparent&rdquo; copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the
+general public, that is suitable for revising the document
+straightforwardly with generic text editors or (for images composed of
+pixels) generic paint programs or (for drawings) some widely available
+drawing editor, and that is suitable for input to text formatters or
+for automatic translation to a variety of formats suitable for input
+to text formatters.  A copy made in an otherwise Transparent file
+format whose markup, or absence of markup, has been arranged to thwart
+or discourage subsequent modification by readers is not Transparent.
+An image format is not Transparent if used for any substantial amount
+of text.  A copy that is not &ldquo;Transparent&rdquo; is called &ldquo;Opaque&rdquo;.
+</p>
+<p>Examples of suitable formats for Transparent copies include plain
+ASCII without markup, Texinfo input format, LaTeX input
+format, SGML or XML using a publicly available
+DTD, and standard-conforming simple HTML,
+PostScript or PDF designed for human modification.  Examples
+of transparent image formats include PNG, XCF and
+JPG.  Opaque formats include proprietary formats that can be
+read and edited only by proprietary word processors, SGML or
+XML for which the DTD and/or processing tools are
+not generally available, and the machine-generated HTML,
+PostScript or PDF produced by some word processors for
+output purposes only.
+</p>
+<p>The &ldquo;Title Page&rdquo; means, for a printed book, the title page itself,
+plus such following pages as are needed to hold, legibly, the material
+this License requires to appear in the title page.  For works in
+formats which do not have any title page as such, &ldquo;Title Page&rdquo; means
+the text near the most prominent appearance of the work&rsquo;s title,
+preceding the beginning of the body of the text.
+</p>
+<p>The &ldquo;publisher&rdquo; means any person or entity that distributes copies
+of the Document to the public.
+</p>
+<p>A section &ldquo;Entitled XYZ&rdquo; means a named subunit of the Document whose
+title either is precisely XYZ or contains XYZ in parentheses following
+text that translates XYZ in another language.  (Here XYZ stands for a
+specific section name mentioned below, such as &ldquo;Acknowledgements&rdquo;,
+&ldquo;Dedications&rdquo;, &ldquo;Endorsements&rdquo;, or &ldquo;History&rdquo;.)  To &ldquo;Preserve the Title&rdquo;
+of such a section when you modify the Document means that it remains a
+section &ldquo;Entitled XYZ&rdquo; according to this definition.
+</p>
+<p>The Document may include Warranty Disclaimers next to the notice which
+states that this License applies to the Document.  These Warranty
+Disclaimers are considered to be included by reference in this
+License, but only as regards disclaiming warranties: any other
+implication that these Warranty Disclaimers may have is void and has
+no effect on the meaning of this License.
+</p>
+</li><li> VERBATIM COPYING
+
+<p>You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies
+to the Document are reproduced in all copies, and that you add no other
+conditions whatsoever to those of this License.  You may not use
+technical measures to obstruct or control the reading or further
+copying of the copies you make or distribute.  However, you may accept
+compensation in exchange for copies.  If you distribute a large enough
+number of copies you must also follow the conditions in section 3.
+</p>
+<p>You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+</p>
+</li><li> COPYING IN QUANTITY
+
+<p>If you publish printed copies (or copies in media that commonly have
+printed covers) of the Document, numbering more than 100, and the
+Document&rsquo;s license notice requires Cover Texts, you must enclose the
+copies in covers that carry, clearly and legibly, all these Cover
+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+the back cover.  Both covers must also clearly and legibly identify
+you as the publisher of these copies.  The front cover must present
+the full title with all words of the title equally prominent and
+visible.  You may add other material on the covers in addition.
+Copying with changes limited to the covers, as long as they preserve
+the title of the Document and satisfy these conditions, can be treated
+as verbatim copying in other respects.
+</p>
+<p>If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+</p>
+<p>If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy
+a computer-network location from which the general network-using
+public has access to download using public-standard network protocols
+a complete Transparent copy of the Document, free of added material.
+If you use the latter option, you must take reasonably prudent steps,
+when you begin distribution of Opaque copies in quantity, to ensure
+that this Transparent copy will remain thus accessible at the stated
+location until at least one year after the last time you distribute an
+Opaque copy (directly or through your agents or retailers) of that
+edition to the public.
+</p>
+<p>It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to give
+them a chance to provide you with an updated version of the Document.
+</p>
+</li><li> MODIFICATIONS
+
+<p>You may copy and distribute a Modified Version of the Document under
+the conditions of sections 2 and 3 above, provided that you release
+the Modified Version under precisely this License, with the Modified
+Version filling the role of the Document, thus licensing distribution
+and modification of the Modified Version to whoever possesses a copy
+of it.  In addition, you must do these things in the Modified Version:
+</p>
+<ol type="A" start="1">
+<li> Use in the Title Page (and on the covers, if any) a title distinct
+from that of the Document, and from those of previous versions
+(which should, if there were any, be listed in the History section
+of the Document).  You may use the same title as a previous version
+if the original publisher of that version gives permission.
+
+</li><li> List on the Title Page, as authors, one or more persons or entities
+responsible for authorship of the modifications in the Modified
+Version, together with at least five of the principal authors of the
+Document (all of its principal authors, if it has fewer than five),
+unless they release you from this requirement.
+
+</li><li> State on the Title page the name of the publisher of the
+Modified Version, as the publisher.
+
+</li><li> Preserve all the copyright notices of the Document.
+
+</li><li> Add an appropriate copyright notice for your modifications
+adjacent to the other copyright notices.
+
+</li><li> Include, immediately after the copyright notices, a license notice
+giving the public permission to use the Modified Version under the
+terms of this License, in the form shown in the Addendum below.
+
+</li><li> Preserve in that license notice the full lists of Invariant Sections
+and required Cover Texts given in the Document&rsquo;s license notice.
+
+</li><li> Include an unaltered copy of this License.
+
+</li><li> Preserve the section Entitled &ldquo;History&rdquo;, Preserve its Title, and add
+to it an item stating at least the title, year, new authors, and
+publisher of the Modified Version as given on the Title Page.  If
+there is no section Entitled &ldquo;History&rdquo; in the Document, create one
+stating the title, year, authors, and publisher of the Document as
+given on its Title Page, then add an item describing the Modified
+Version as stated in the previous sentence.
+
+</li><li> Preserve the network location, if any, given in the Document for
+public access to a Transparent copy of the Document, and likewise
+the network locations given in the Document for previous versions
+it was based on.  These may be placed in the &ldquo;History&rdquo; section.
+You may omit a network location for a work that was published at
+least four years before the Document itself, or if the original
+publisher of the version it refers to gives permission.
+
+</li><li> For any section Entitled &ldquo;Acknowledgements&rdquo; or &ldquo;Dedications&rdquo;, Preserve
+the Title of the section, and preserve in the section all the
+substance and tone of each of the contributor acknowledgements and/or
+dedications given therein.
+
+</li><li> Preserve all the Invariant Sections of the Document,
+unaltered in their text and in their titles.  Section numbers
+or the equivalent are not considered part of the section titles.
+
+</li><li> Delete any section Entitled &ldquo;Endorsements&rdquo;.  Such a section
+may not be included in the Modified Version.
+
+</li><li> Do not retitle any existing section to be Entitled &ldquo;Endorsements&rdquo; or
+to conflict in title with any Invariant Section.
+
+</li><li> Preserve any Warranty Disclaimers.
+</li></ol>
+
+<p>If the Modified Version includes new front-matter sections or
+appendices that qualify as Secondary Sections and contain no material
+copied from the Document, you may at your option designate some or all
+of these sections as invariant.  To do this, add their titles to the
+list of Invariant Sections in the Modified Version&rsquo;s license notice.
+These titles must be distinct from any other section titles.
+</p>
+<p>You may add a section Entitled &ldquo;Endorsements&rdquo;, provided it contains
+nothing but endorsements of your Modified Version by various
+parties&mdash;for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+</p>
+<p>You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version.  Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or
+through arrangements made by) any one entity.  If the Document already
+includes a cover text for the same cover, previously added by you or
+by arrangement made by the same entity you are acting on behalf of,
+you may not add another; but you may replace the old one, on explicit
+permission from the previous publisher that added the old one.
+</p>
+<p>The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+</p>
+</li><li> COMBINING DOCUMENTS
+
+<p>You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its
+license notice, and that you preserve all their Warranty Disclaimers.
+</p>
+<p>The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy.  If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by
+adding at the end of it, in parentheses, the name of the original
+author or publisher of that section if known, or else a unique number.
+Make the same adjustment to the section titles in the list of
+Invariant Sections in the license notice of the combined work.
+</p>
+<p>In the combination, you must combine any sections Entitled &ldquo;History&rdquo;
+in the various original documents, forming one section Entitled
+&ldquo;History&rdquo;; likewise combine any sections Entitled &ldquo;Acknowledgements&rdquo;,
+and any sections Entitled &ldquo;Dedications&rdquo;.  You must delete all
+sections Entitled &ldquo;Endorsements.&rdquo;
+</p>
+</li><li> COLLECTIONS OF DOCUMENTS
+
+<p>You may make a collection consisting of the Document and other documents
+released under this License, and replace the individual copies of this
+License in the various documents with a single copy that is included in
+the collection, provided that you follow the rules of this License for
+verbatim copying of each of the documents in all other respects.
+</p>
+<p>You may extract a single document from such a collection, and distribute
+it individually under this License, provided you insert a copy of this
+License into the extracted document, and follow this License in all
+other respects regarding verbatim copying of that document.
+</p>
+</li><li> AGGREGATION WITH INDEPENDENT WORKS
+
+<p>A compilation of the Document or its derivatives with other separate
+and independent documents or works, in or on a volume of a storage or
+distribution medium, is called an &ldquo;aggregate&rdquo; if the copyright
+resulting from the compilation is not used to limit the legal rights
+of the compilation&rsquo;s users beyond what the individual works permit.
+When the Document is included in an aggregate, this License does not
+apply to the other works in the aggregate which are not themselves
+derivative works of the Document.
+</p>
+<p>If the Cover Text requirement of section 3 is applicable to these
+copies of the Document, then if the Document is less than one half of
+the entire aggregate, the Document&rsquo;s Cover Texts may be placed on
+covers that bracket the Document within the aggregate, or the
+electronic equivalent of covers if the Document is in electronic form.
+Otherwise they must appear on printed covers that bracket the whole
+aggregate.
+</p>
+</li><li> TRANSLATION
+
+<p>Translation is considered a kind of modification, so you may
+distribute translations of the Document under the terms of section 4.
+Replacing Invariant Sections with translations requires special
+permission from their copyright holders, but you may include
+translations of some or all Invariant Sections in addition to the
+original versions of these Invariant Sections.  You may include a
+translation of this License, and all the license notices in the
+Document, and any Warranty Disclaimers, provided that you also include
+the original English version of this License and the original versions
+of those notices and disclaimers.  In case of a disagreement between
+the translation and the original version of this License or a notice
+or disclaimer, the original version will prevail.
+</p>
+<p>If a section in the Document is Entitled &ldquo;Acknowledgements&rdquo;,
+&ldquo;Dedications&rdquo;, or &ldquo;History&rdquo;, the requirement (section 4) to Preserve
+its Title (section 1) will typically require changing the actual
+title.
+</p>
+</li><li> TERMINATION
+
+<p>You may not copy, modify, sublicense, or distribute the Document
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense, or distribute it is void, and
+will automatically terminate your rights under this License.
+</p>
+<p>However, if you cease all violation of this License, then your license
+from a particular copyright holder is reinstated (a) provisionally,
+unless and until the copyright holder explicitly and finally
+terminates your license, and (b) permanently, if the copyright holder
+fails to notify you of the violation by some reasonable means prior to
+60 days after the cessation.
+</p>
+<p>Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+</p>
+<p>Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, receipt of a copy of some or all of the same material does
+not give you any rights to use it.
+</p>
+</li><li> FUTURE REVISIONS OF THIS LICENSE
+
+<p>The Free Software Foundation may publish new, revised versions
+of the GNU Free Documentation License from time to time.  Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.  See
+<a href="http://www.gnu.org/copyleft/">http://www.gnu.org/copyleft/</a>.
+</p>
+<p>Each version of the License is given a distinguishing version number.
+If the Document specifies that a particular numbered version of this
+License &ldquo;or any later version&rdquo; applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation.  If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation.  If the Document
+specifies that a proxy can decide which future versions of this
+License can be used, that proxy&rsquo;s public statement of acceptance of a
+version permanently authorizes you to choose that version for the
+Document.
+</p>
+</li><li> RELICENSING
+
+<p>&ldquo;Massive Multiauthor Collaboration Site&rdquo; (or &ldquo;MMC Site&rdquo;) means any
+World Wide Web server that publishes copyrightable works and also
+provides prominent facilities for anybody to edit those works.  A
+public wiki that anybody can edit is an example of such a server.  A
+&ldquo;Massive Multiauthor Collaboration&rdquo; (or &ldquo;MMC&rdquo;) contained in the
+site means any set of copyrightable works thus published on the MMC
+site.
+</p>
+<p>&ldquo;CC-BY-SA&rdquo; means the Creative Commons Attribution-Share Alike 3.0
+license published by Creative Commons Corporation, a not-for-profit
+corporation with a principal place of business in San Francisco,
+California, as well as future copyleft versions of that license
+published by that same organization.
+</p>
+<p>&ldquo;Incorporate&rdquo; means to publish or republish a Document, in whole or
+in part, as part of another Document.
+</p>
+<p>An MMC is &ldquo;eligible for relicensing&rdquo; if it is licensed under this
+License, and if all works that were first published under this License
+somewhere other than this MMC, and subsequently incorporated in whole
+or in part into the MMC, (1) had no cover texts or invariant sections,
+and (2) were thus incorporated prior to November 1, 2008.
+</p>
+<p>The operator of an MMC Site may republish an MMC contained in the site
+under CC-BY-SA on the same site at any time before August 1, 2009,
+provided the MMC is eligible for relicensing.
+</p>
+</li></ol>
+
+<span id="ADDENDUM_003a-How-to-use-this-License-for-your-documents"></span><h3 class="heading">ADDENDUM: How to use this License for your documents</h3>
+
+<p>To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and
+license notices just after the title page:
+</p>
+<div class="example">
+<pre class="example">  Copyright (C)  <var>year</var>  <var>your name</var>.
+  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;
+  with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+  Texts.  A copy of the license is included in the section entitled ``GNU
+  Free Documentation License''.
+</pre></div>
+
+<p>If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
+replace the &ldquo;with&hellip;Texts.&rdquo; line with this:
+</p>
+<div class="example">
+<pre class="example">    with the Invariant Sections being <var>list their titles</var>, with
+    the Front-Cover Texts being <var>list</var>, and with the Back-Cover Texts
+    being <var>list</var>.
+</pre></div>
+
+<p>If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+</p>
+<p>If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License,
+to permit their use in free software.
+</p>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Symbol-Index.html" accesskey="n" rel="next">Symbol Index</a>, Previous: <a href="Signals.html" accesskey="p" rel="prev">Signals</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Handling-Infinity.html
===================================================================
--- public/doc/gnu-c/Handling-Infinity.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Handling-Infinity.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,115 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Handling Infinity (GNU C Language Manual)</title>
+
+<meta name="description" content="Handling Infinity (GNU C Language Manual)">
+<meta name="keywords" content="Handling Infinity (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Floating-Point-in-Depth.html" rel="up" title="Floating Point in Depth">
+<link href="Handling-NaN.html" rel="next" title="Handling NaN">
+<link href="Exact-Floating-Constants.html" rel="prev" title="Exact Floating Constants">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Handling-Infinity"></span><div class="header">
+<p>
+Next: <a href="Handling-NaN.html" accesskey="n" rel="next">Handling NaN</a>, Previous: <a href="Exact-Floating-Constants.html" accesskey="p" rel="prev">Exact Floating Constants</a>, Up: <a href="Floating-Point-in-Depth.html" accesskey="u" rel="up">Floating Point in Depth</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>
+</div>
+<hr>
+<span id="Handling-Infinity-1"></span><h3 class="section">28.13 Handling Infinity</h3>
+<span id="index-infinity-in-floating_002dpoint-arithmetic"></span>
+<span id="index-floating_002dpoint-infinity"></span>
+
+<p>As we noted earlier, the IEEE 754 model of computing is not to stop
+the program when exceptional conditions occur.  It takes note of
+exceptional values or conditions by setting sticky <em>exception
+flags</em>, or by producing results with the special values Infinity and
+QNaN.  In this section, we discuss Infinity; see <a href="Handling-NaN.html">Handling NaN</a> for
+the other.
+</p>
+<p>In GNU C, you can create a value of negative Infinity in software like
+this:
+</p>
+<pre class="verbatim">double x;
+
+x = -1.0 / 0.0;
+</pre>
+<p>GNU C supplies the <code>__builtin_inf</code>, <code>__builtin_inff</code>, and
+<code>__builtin_infl</code> macros, and the GNU C Library provides the
+<code>INFINITY</code> macro, all of which are compile-time constants for
+positive infinity.
+</p>
+<p>GNU C also provides a standard function to test for an Infinity:
+<code>isinf (x)</code> returns <code>1</code> if the argument is a signed
+infinity, and <code>0</code> if not.
+</p>
+<p>Infinities can be compared, and all Infinities of the same sign are
+equal: there is no notion in IEEE 754 arithmetic of different kinds of
+Infinities, as there are in some areas of mathematics.  Positive
+Infinity is larger than any finite value, and negative Infinity is
+smaller than finite value.
+</p>
+<p>Infinities propagate in addition, subtraction, multiplication,
+and square root, but in division, they disappear, because of the
+rule that <code>finite / Infinity</code> is <code>0.0</code>.  Thus, an
+overflow in an intermediate computation that produces an Infinity
+is likely to be noticed later in the final results.  The programmer can
+then decide whether the overflow is expected, and acceptable, or whether
+the code possibly has a bug, or needs to be run in higher
+precision, or redesigned to avoid the production of the Infinity.
+</p>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Handling-NaN.html" accesskey="n" rel="next">Handling NaN</a>, Previous: <a href="Exact-Floating-Constants.html" accesskey="p" rel="prev">Exact Floating Constants</a>, Up: <a href="Floating-Point-in-Depth.html" accesskey="u" rel="up">Floating Point in Depth</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Handling-NaN.html
===================================================================
--- public/doc/gnu-c/Handling-NaN.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Handling-NaN.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,154 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Handling NaN (GNU C Language Manual)</title>
+
+<meta name="description" content="Handling NaN (GNU C Language Manual)">
+<meta name="keywords" content="Handling NaN (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Floating-Point-in-Depth.html" rel="up" title="Floating Point in Depth">
+<link href="Signed-Zeros.html" rel="next" title="Signed Zeros">
+<link href="Handling-Infinity.html" rel="prev" title="Handling Infinity">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Handling-NaN"></span><div class="header">
+<p>
+Next: <a href="Signed-Zeros.html" accesskey="n" rel="next">Signed Zeros</a>, Previous: <a href="Handling-Infinity.html" accesskey="p" rel="prev">Handling Infinity</a>, Up: <a href="Floating-Point-in-Depth.html" accesskey="u" rel="up">Floating Point in Depth</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>
+</div>
+<hr>
+<span id="Handling-NaN-1"></span><h3 class="section">28.14 Handling NaN</h3>
+<span id="index-NaN-in-floating_002dpoint-arithmetic"></span>
+<span id="index-not-a-number"></span>
+<span id="index-floating_002dpoint-NaN"></span>
+
+<p>NaNs are not numbers: they represent values from computations that
+produce undefined results.  They have a distinctive property that
+makes them unlike any other floating-point value: they are
+<em>unequal to everything, including themselves</em>!  Thus, you can
+write a test for a NaN like this:
+</p>
+<div class="example">
+<pre class="example">if (x != x)
+  printf (&quot;x is a NaN\n&quot;);
+</pre></div>
+
+<p>This test works in GNU C, but some compilers might evaluate that test
+expression as false without properly checking for the NaN value.
+A more portable way to test for NaN is to use the <code>isnan</code>
+function declared in <code>math.h</code>:
+</p>
+<div class="example">
+<pre class="example">if (isnan (x))
+  printf (&quot;x is a NaN\n&quot;);
+</pre></div>
+
+<p>See <a href="https://www.gnu.org/software/libc/manual/html_node/Floating-Point-Classes.html#Floating-Point-Classes">Floating Point Classes</a> in <cite>The GNU C Library Reference Manual</cite>.
+</p>
+<p>One important use of NaNs is marking of missing data.  For
+example, in statistics, such data must be omitted from
+computations.  Use of any particular finite value for missing
+data would eventually collide with real data, whereas such data
+could never be a NaN, so it is an ideal marker.  Functions that
+deal with collections of data that may have holes can be written
+to test for, and ignore, NaN values.
+</p>
+<p>It is easy to generate a NaN in computations: evaluating <code>0.0 /
+0.0</code> is the commonest way, but <code>Infinity - Infinity</code>,
+<code>Infinity / Infinity</code>, and <code>sqrt (-1.0)</code> also work.
+Functions that receive out-of-bounds arguments can choose to return a
+stored NaN value, such as with the <code>NAN</code> macro defined in
+<code>math.h</code>, but that does not set the <em>invalid operand</em>
+exception flag, and that can fool some programs.
+</p>
+<span id="index-NaNs_002dalways_002dpropagate-rule"></span>
+<p>Like Infinity, NaNs propagate in computations, but they are even
+stickier, because they never disappear in division. Thus, once a
+NaN appears in a chain of numerical operations, it is almost
+certain to pop out into the final results.  The programmer 
+has to decide whether that is expected, or whether there is a
+coding or algorithmic error that needs repair.
+</p>
+<p>In general, when function gets a NaN argument, it usually returns a
+NaN.  However, there are some exceptions in the math-library functions
+that you need to be aware of, because they violate the
+<em>NaNs-always-propagate</em> rule:
+</p>
+<ul>
+<li> <code>pow (x, 0.0)</code> always returns <code>1.0</code>, even if <code>x</code> is
+0.0, Infinity, or a NaN.
+
+</li><li> <code>pow (1, y)</code> always returns <code>1</code>, even if <code>y</code> is a NaN.
+
+</li><li> <code>hypot (INFINITY, y)</code> and <code>hypot (-INFINITY, y)</code> both
+always return <code>INFINITY</code>, even if <code>y</code> is a Nan.
+
+</li><li> If just one of the arguments to <code>fmax (x, y)</code> or
+<code>fmin (x, y)</code> is a NaN, it returns the other argument.  If
+both arguments are NaNs, it returns a NaN, but there is no
+requirement about where it comes from: it could be <code>x</code>, or
+<code>y</code>, or some other quiet NaN.
+</li></ul>
+
+<p>NaNs are also used for the return values of math-library
+functions where the result is not representable in real
+arithmetic, or is mathematically undefined or uncertain, such as
+<code>sqrt (-1.0)</code> and <code>sin (Infinity)</code>.  However, note that a
+result that is merely too big to represent should always produce
+an Infinity, such as with <code>exp (1000.0)</code> (too big) and
+<code>exp (Infinity)</code> (truly infinite).
+</p>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Signed-Zeros.html" accesskey="n" rel="next">Signed Zeros</a>, Previous: <a href="Handling-Infinity.html" accesskey="p" rel="prev">Handling Infinity</a>, Up: <a href="Floating-Point-in-Depth.html" accesskey="u" rel="up">Floating Point in Depth</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Header-Files.html
===================================================================
--- public/doc/gnu-c/Header-Files.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Header-Files.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,122 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Header Files (GNU C Language Manual)</title>
+
+<meta name="description" content="Header Files (GNU C Language Manual)">
+<meta name="keywords" content="Header Files (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Preprocessing.html" rel="up" title="Preprocessing">
+<link href="include-Syntax.html" rel="next" title="include Syntax">
+<link href="Preprocessing-Tokens.html" rel="prev" title="Preprocessing Tokens">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Header-Files"></span><div class="header">
+<p>
+Next: <a href="Macros.html" accesskey="n" rel="next">Macros</a>, Previous: <a href="Preprocessing-Tokens.html" accesskey="p" rel="prev">Preprocessing Tokens</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>
+</div>
+<hr>
+<span id="Header-Files-1"></span><h3 class="section">26.4 Header Files</h3>
+
+<span id="index-header-file"></span>
+<p>A header file is a file of C code, typically containing C declarations
+and macro definitions (see <a href="Macros.html">Macros</a>), to be shared between several
+source files.  You request the use of a header file in your program by
+<em>including</em> it, with the C preprocessing directive
+<code>#include</code>.
+</p>
+<p>Header files serve two purposes.
+</p>
+<ul>
+<li> <span id="index-system-header-files"></span>
+System header files declare the interfaces to parts of the operating
+system.  You include them in your program to supply the definitions and
+declarations that you need to invoke system calls and libraries.
+
+</li><li> Program-specific header files contain declarations for interfaces between the
+source files of a particular program.  It is a good idea to create a header
+file for related declarations and macro definitions if all or most of them
+are needed in several different source files.
+</li></ul>
+
+<p>Including a header file produces the same results as copying the header
+file into each source file that needs it.  Such copying would be
+time-consuming and error-prone.  With a header file, the related
+declarations appear in only one place.  If they need to be changed, you
+can change them in one place, and programs that include the header file
+will then automatically use the new version when next recompiled.  The header
+file eliminates the labor of finding and changing all the copies as well
+as the risk that a failure to change one copy will result in
+inconsistencies within a program.
+</p>
+<p>In C, the usual convention is to give header files names that end with
+<samp>.h</samp>.  It is most portable to use only letters, digits, dashes, and
+underscores in header file names, and at most one dot.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="include-Syntax.html" accesskey="1">include Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="include-Operation.html" accesskey="2">include Operation</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Search-Path.html" accesskey="3">Search Path</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Once_002dOnly-Headers.html" accesskey="4">Once-Only Headers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Computed-Includes.html" accesskey="5">Computed Includes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Macros.html" accesskey="n" rel="next">Macros</a>, Previous: <a href="Preprocessing-Tokens.html" accesskey="p" rel="prev">Preprocessing Tokens</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Identifiers.html
===================================================================
--- public/doc/gnu-c/Identifiers.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Identifiers.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,102 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Identifiers (GNU C Language Manual)</title>
+
+<meta name="description" content="Identifiers (GNU C Language Manual)">
+<meta name="keywords" content="Identifiers (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Lexical-Syntax.html" rel="up" title="Lexical Syntax">
+<link href="Operators_002fPunctuation.html" rel="next" title="Operators/Punctuation">
+<link href="Comments.html" rel="prev" title="Comments">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Identifiers"></span><div class="header">
+<p>
+Next: <a href="Operators_002fPunctuation.html" accesskey="n" rel="next">Operators/Punctuation</a>, Previous: <a href="Comments.html" accesskey="p" rel="prev">Comments</a>, Up: <a href="Lexical-Syntax.html" accesskey="u" rel="up">Lexical Syntax</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>
+</div>
+<hr>
+<span id="Identifiers-1"></span><h3 class="section">5.5 Identifiers</h3>
+<span id="index-identifiers"></span>
+
+<p>An <em>identifier</em> (name) in C is a sequence of letters and digits,
+as well as &lsquo;<samp>_</samp>&rsquo;, that does not start with a digit.  Most compilers
+also allow &lsquo;<samp>$</samp>&rsquo;.  An identifier can be as long as you like; for
+example,
+</p>
+<div class="example">
+<pre class="example">int anti_dis_establishment_arian_ism;
+</pre></div>
+
+<span id="index-case-of-letters-in-identifiers"></span>
+<p>Letters in identifiers are case-sensitive in C; thus, <code>a</code>
+and <code>A</code> are two different identifiers.
+</p>
+<span id="index-keyword"></span>
+<span id="index-reserved-words"></span>
+<p>Identifiers in C are used as variable names, function names, typedef
+names, enumeration constants, type tags, field names, and labels.
+Certain identifiers in C are <em>keywords</em>, which means they have
+specific syntactic meanings.  Keywords in C are <em>reserved words</em>,
+meaning you cannot use them in any other way.  For instance, you can&rsquo;t
+define a variable or function named <code>return</code> or <code>if</code>.
+</p>
+<p>You can also include other characters, even non-ASCII characters, in
+identifiers by writing their Unicode character names, which start with
+&lsquo;<samp>\u</samp>&rsquo; or &lsquo;<samp>\U</samp>&rsquo;, in the identifier name.  See <a href="Unicode-Character-Codes.html">Unicode Character Codes</a>.  However, it is usually a bad idea to use non-ASCII
+characters in identifiers, and when they are written in English, they
+never need non-ASCII characters.  See <a href="English.html">English</a>.
+</p>
+<p>Whitespace is required to separate two consecutive identifiers, or to
+separate an identifier from a preceding or following numeric
+constant.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Imaginary-Constants.html
===================================================================
--- public/doc/gnu-c/Imaginary-Constants.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Imaginary-Constants.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,112 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Imaginary Constants (GNU C Language Manual)</title>
+
+<meta name="description" content="Imaginary Constants (GNU C Language Manual)">
+<meta name="keywords" content="Imaginary Constants (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Constants.html" rel="up" title="Constants">
+<link href="Invalid-Numbers.html" rel="next" title="Invalid Numbers">
+<link href="Floating-Constants.html" rel="prev" title="Floating Constants">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Imaginary-Constants"></span><div class="header">
+<p>
+Next: <a href="Invalid-Numbers.html" accesskey="n" rel="next">Invalid Numbers</a>, Previous: <a href="Floating-Constants.html" accesskey="p" rel="prev">Floating Constants</a>, Up: <a href="Constants.html" accesskey="u" rel="up">Constants</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>
+</div>
+<hr>
+<span id="Imaginary-Constants-1"></span><h3 class="section">12.4 Imaginary Constants</h3>
+<span id="index-imaginary-constants"></span>
+<span id="index-complex-constants"></span>
+<span id="index-constants_002c-imaginary"></span>
+
+<p>A complex number consists of a real part plus an imaginary part.
+(Either or both parts may be zero.)  This section explains how to
+write numeric constants with imaginary values.  By adding these to
+ordinary real-valued numeric constants, we can make constants with
+complex values.
+</p>
+<p>The simple way to write an imaginary-number constant is to attach the
+suffix &lsquo;<samp>i</samp>&rsquo; or &lsquo;<samp>I</samp>&rsquo;, or &lsquo;<samp>j</samp>&rsquo; or &lsquo;<samp>J</samp>&rsquo;, to an integer or
+floating-point constant.  For example, <code>2.5fi</code> has type
+<code>_Complex float</code> and <code>3i</code> has type <code>_Complex int</code>.
+The four alternative suffix letters are all equivalent.
+</p>
+<span id="index-_005fComplex_005fI"></span>
+<p>The other way to write an imaginary constant is to multiply a real
+constant by <code>_Complex_I</code>, which represents the imaginary number
+i.  Standard C doesn&rsquo;t support suffixing with &lsquo;<samp>i</samp>&rsquo; or &lsquo;<samp>j</samp>&rsquo;, so
+this clunky way is needed.
+</p>
+<p>To write a complex constant with a nonzero real part and a nonzero
+imaginary part, write the two separately and add them, like this:
+</p>
+<div class="example">
+<pre class="example">4.0 + 3.0i
+</pre></div>
+
+<p>That gives the value 4 + 3i, with type <code>_Complex double</code>.
+</p>
+<p>Such a sum can include multiple real constants, or none.  Likewise, it
+can include multiple imaginary constants, or none.  For example:
+</p>
+<div class="example">
+<pre class="example">_Complex double foo, bar, quux;
+
+foo = 2.0i + 4.0 + 3.0i; /* <span class="roman">Imaginary part is 5.0.</span> */
+bar = 4.0 + 12.0; /* <span class="roman">Imaginary part is 0.0.</span> */
+quux = 3.0i + 15.0i; /* <span class="roman">Real part is 0.0.</span> */
+</pre></div>
+
+<p>See <a href="Complex-Data-Types.html">Complex Data Types</a>.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Incomplete-Array-Types.html
===================================================================
--- public/doc/gnu-c/Incomplete-Array-Types.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Incomplete-Array-Types.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,112 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Incomplete Array Types (GNU C Language Manual)</title>
+
+<meta name="description" content="Incomplete Array Types (GNU C Language Manual)">
+<meta name="keywords" content="Incomplete Array Types (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Arrays.html" rel="up" title="Arrays">
+<link href="Limitations-of-C-Arrays.html" rel="next" title="Limitations of C Arrays">
+<link href="Array-Type-Designators.html" rel="prev" title="Array Type Designators">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Incomplete-Array-Types"></span><div class="header">
+<p>
+Next: <a href="Limitations-of-C-Arrays.html" accesskey="n" rel="next">Limitations of C Arrays</a>, Previous: <a href="Array-Type-Designators.html" accesskey="p" rel="prev">Array Type Designators</a>, Up: <a href="Arrays.html" accesskey="u" rel="up">Arrays</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>
+</div>
+<hr>
+<span id="Incomplete-Array-Types-1"></span><h3 class="section">16.5 Incomplete Array Types</h3>
+<span id="index-incomplete-array-types"></span>
+<span id="index-array-types_002c-incomplete"></span>
+
+<p>An array is equivalent, for most purposes, to a pointer to its zeroth
+element.  When that is true, the length of the array is irrelevant.
+The length needs to be known only for allocating space for the array, or
+for <code>sizeof</code> and <code>typeof</code> (see <a href="Auto-Type.html">Auto Type</a>).  Thus, in some
+contexts C allows
+</p>
+<ul>
+<li> An <code>extern</code> declaration says how to refer to a variable allocated
+elsewhere.  It does not need to allocate space for the variable,
+so if it is an array, you can omit the length.  For example,
+
+<div class="example">
+<pre class="example">extern int foo[];
+</pre></div>
+
+</li><li> When declaring a function parameter as an array, the argument value
+passed to the function is really a pointer to the array&rsquo;s zeroth
+element.  This value does not say how long the array really is, there
+is no need to declare it.  For example,
+
+<div class="example">
+<pre class="example">int
+func (int foo[])
+</pre></div>
+</li></ul>
+
+<p>These declarations are examples of <em>incomplete</em> array types, types
+that are not fully specified.  The incompleteness makes no difference
+for accessing elements of the array, but it matters for some other
+things.  For instance, <code>sizeof</code> is not allowed on an incomplete
+type.
+</p>
+<p>With multidimensional arrays, only the first dimension can be omitted:
+</p>
+<div class="example">
+<pre class="example">extern struct chesspiece *funnyboard foo[][8];
+</pre></div>
+
+<p>In other words, the code doesn&rsquo;t have to say how many rows there are,
+but it must state how big each row is.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Incomplete-Types.html
===================================================================
--- public/doc/gnu-c/Incomplete-Types.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Incomplete-Types.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,111 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Incomplete Types (GNU C Language Manual)</title>
+
+<meta name="description" content="Incomplete Types (GNU C Language Manual)">
+<meta name="keywords" content="Incomplete Types (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Structures.html" rel="up" title="Structures">
+<link href="Intertwined-Incomplete-Types.html" rel="next" title="Intertwined Incomplete Types">
+<link href="Unnamed-Types-as-Fields.html" rel="prev" title="Unnamed Types as Fields">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Incomplete-Types"></span><div class="header">
+<p>
+Next: <a href="Intertwined-Incomplete-Types.html" accesskey="n" rel="next">Intertwined Incomplete Types</a>, Previous: <a href="Unnamed-Types-as-Fields.html" accesskey="p" rel="prev">Unnamed Types as Fields</a>, Up: <a href="Structures.html" accesskey="u" rel="up">Structures</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>
+</div>
+<hr>
+<span id="Incomplete-Types-1"></span><h3 class="section">15.18 Incomplete Types</h3>
+<span id="index-incomplete-types"></span>
+<span id="index-types_002c-incomplete"></span>
+
+<p>A type that has not been fully defined is called an <em>incomplete
+type</em>.  Structure and union types are incomplete when the code makes a
+forward reference, such as <code>struct foo</code>, before defining the
+type.  An array type is incomplete when its length is unspecified.
+</p>
+<p>You can&rsquo;t use an incomplete type to declare a variable or field, or
+use it for a function parameter or return type.  The operators
+<code>sizeof</code> and <code>_Alignof</code> give errors when used on an
+incomplete type.
+</p>
+<p>However, you can define a pointer to an incomplete type, and declare a
+variable or field with such a pointer type.  In general, you can do
+everything with such pointers except dereference them.  For example:
+</p>
+<div class="example">
+<pre class="example">extern void bar (struct mysterious_value *);
+
+void
+foo (struct mysterious_value *arg)
+{
+  bar (arg);
+}
+
+<span class="roman">&hellip;</span>
+
+{
+  struct mysterious_value *p, **q;
+
+  p = *q;
+  foo (p);
+}
+</pre></div>
+
+<p>These examples are valid because the code doesn&rsquo;t try to understand
+what <code>p</code> points to; it just passes the pointer around.
+(Presumably <code>bar</code> is defined in some other file that really does
+have a definition for <code>struct mysterious_value</code>.)  However,
+dereferencing the pointer would get an error; that requires a
+definition for the structure type.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Increment_002fDecrement.html
===================================================================
--- public/doc/gnu-c/Increment_002fDecrement.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Increment_002fDecrement.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,121 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Increment/Decrement (GNU C Language Manual)</title>
+
+<meta name="description" content="Increment/Decrement (GNU C Language Manual)">
+<meta name="keywords" content="Increment/Decrement (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Assignment-Expressions.html" rel="up" title="Assignment Expressions">
+<link href="Postincrement_002fPostdecrement.html" rel="next" title="Postincrement/Postdecrement">
+<link href="Modifying-Assignment.html" rel="prev" title="Modifying Assignment">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Increment_002fDecrement"></span><div class="header">
+<p>
+Next: <a href="Postincrement_002fPostdecrement.html" accesskey="n" rel="next">Postincrement/Postdecrement</a>, Previous: <a href="Modifying-Assignment.html" accesskey="p" rel="prev">Modifying Assignment</a>, Up: <a href="Assignment-Expressions.html" accesskey="u" rel="up">Assignment Expressions</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>
+</div>
+<hr>
+<span id="Increment-and-Decrement-Operators"></span><h3 class="section">7.4 Increment and Decrement Operators</h3>
+<span id="index-increment-operator"></span>
+<span id="index-decrement-operator"></span>
+<span id="index-operator_002c-increment"></span>
+<span id="index-operator_002c-decrement"></span>
+<span id="index-preincrement-expression"></span>
+<span id="index-predecrement-expression"></span>
+
+<p>The operators &lsquo;<samp>++</samp>&rsquo; and &lsquo;<samp>--</samp>&rsquo; are the <em>increment</em> and
+<em>decrement</em> operators.  When used on a numeric value, they add or
+subtract 1.  We don&rsquo;t consider them assignments, but they are
+equivalent to assignments.
+</p>
+<p>Using &lsquo;<samp>++</samp>&rsquo; or &lsquo;<samp>--</samp>&rsquo; as a prefix, before an lvalue, is called
+<em>preincrement</em> or <em>predecrement</em>.  This adds or subtracts 1
+and the result becomes the expression&rsquo;s value.  For instance,
+</p>
+<div class="example">
+<pre class="example">#include &lt;stdio.h&gt;   /* <span class="roman">Declares <code>printf</code>.</span> */
+
+int
+main (void)
+{
+  int i = 5;
+  printf (&quot;%d\n&quot;, i);
+  printf (&quot;%d\n&quot;, ++i);
+  printf (&quot;%d\n&quot;, i);
+  return 0;
+}
+</pre></div>
+
+<p>prints lines containing 5, 6, and 6 again.  The expression <code>++i</code>
+increments <code>i</code> from 5 to 6, and has the value 6, so the output
+from <code>printf</code> on that line says &lsquo;<samp>6</samp>&rsquo;.
+</p>
+<p>Using &lsquo;<samp>--</samp>&rsquo; instead, for predecrement,
+</p>
+<div class="example">
+<pre class="example">#include &lt;stdio.h&gt;   /* <span class="roman">Declares <code>printf</code>.</span> */
+
+int
+main (void)
+{
+  int i = 5;
+  printf (&quot;%d\n&quot;, i);
+  printf (&quot;%d\n&quot;, --i);
+  printf (&quot;%d\n&quot;, i);
+  return 0;
+}
+</pre></div>
+
+<p>prints three lines that contain (respectively) &lsquo;<samp>5</samp>&rsquo;, &lsquo;<samp>4</samp>&rsquo;, and
+again &lsquo;<samp>4</samp>&rsquo;.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Initializers.html
===================================================================
--- public/doc/gnu-c/Initializers.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Initializers.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,151 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Initializers (GNU C Language Manual)</title>
+
+<meta name="description" content="Initializers (GNU C Language Manual)">
+<meta name="keywords" content="Initializers (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Variables.html" rel="up" title="Variables">
+<link href="Designated-Inits.html" rel="next" title="Designated Inits">
+<link href="Combining-Variable-Declarations.html" rel="prev" title="Combining Variable Declarations">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Initializers"></span><div class="header">
+<p>
+Next: <a href="Designated-Inits.html" accesskey="n" rel="next">Designated Inits</a>, Previous: <a href="Variable-Declarations.html" accesskey="p" rel="prev">Variable Declarations</a>, Up: <a href="Variables.html" accesskey="u" rel="up">Variables</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>
+</div>
+<hr>
+<span id="Initializers-1"></span><h3 class="section">20.2 Initializers</h3>
+<span id="index-initializers"></span>
+
+<p>A variable&rsquo;s declaration, unless it is <code>extern</code>, should also
+specify its initial value.  For numeric and pointer-type variables,
+the initializer is an expression for the value.  If necessary, it is
+converted to the variable&rsquo;s type, just as in an assignment.
+</p>
+<p>You can also initialize a local structure-type (see <a href="Structures.html">Structures</a>) or
+local union-type (see <a href="Unions.html">Unions</a>) variable this way, from an
+expression whose value has the same type.  But you can&rsquo;t initialize an
+array this way (see <a href="Arrays.html">Arrays</a>), since arrays are not first-class
+objects in C (see <a href="Limitations-of-C-Arrays.html">Limitations of C Arrays</a>) and there is no array
+assignment.
+</p>
+<p>You can initialize arrays and structures componentwise,
+with a list of the elements or components.  You can initialize
+a union with any one of its alternatives.
+</p>
+<ul>
+<li> A component-wise initializer for an array consists of element values
+surrounded by &lsquo;<samp>{<span class="roman">&hellip;</span>}</samp>&rsquo;.  If the values in the initializer
+don&rsquo;t cover all the elements in the array, the remaining elements are
+initialized to zero.
+
+<p>You can omit the size of the array when you declare it, and let
+the initializer specify the size:
+</p>
+<div class="example">
+<pre class="example">int array[] = { 3, 9, 12 };
+</pre></div>
+
+</li><li> A component-wise initializer for a structure consists of field values
+surrounded by &lsquo;<samp>{<span class="roman">&hellip;</span>}</samp>&rsquo;.  Write the field values in the same
+order as the fields are declared in the structure.  If the values in
+the initializer don&rsquo;t cover all the fields in the structure, the
+remaining fields are initialized to zero.
+
+</li><li> The initializer for a union-type variable has the form <code>{
+<var>value</var> }</code>, where <var>value</var> initializes the <em>first alternative</em>
+in the union definition.
+</li></ul>
+
+<p>For an array of arrays, a structure containing arrays, an array of
+structures, etc., you can nest these constructs.  For example,
+</p>
+<div class="example">
+<pre class="example">struct point { double x, y; };
+
+struct point series[]
+  = { {0, 0}, {1.5, 2.8}, {99, 100.0004} };
+</pre></div>
+
+<p>You can omit a pair of inner braces if they contain the right
+number of elements for the sub-value they initialize, so that
+no elements or fields need to be filled in with zeros.
+But don&rsquo;t do that very much, as it gets confusing.
+</p>
+<p>An array of <code>char</code> can be initialized using a string constant.
+Recall that the string constant includes an implicit null character at
+the end (see <a href="String-Constants.html">String Constants</a>).  Using a string constant as
+initializer means to use its contents as the initial values of the
+array elements.  Here are examples:
+</p>
+<div class="example">
+<pre class="example">char text[6] = &quot;text!&quot;;     /* <span class="roman">Includes the null.</span> */
+char text[5] = &quot;text!&quot;;     /* <span class="roman">Excludes the null.</span> */
+char text[] = &quot;text!&quot;;      /* <span class="roman">Gets length 6.</span> */
+char text[]
+  = { 't', 'e', 'x', 't', '!', 0 };  /* <span class="roman">same as above.</span> */
+char text[] = { &quot;text!&quot; };  /* <span class="roman">Braces are optional.</span> */
+</pre></div>
+
+<p>and this kind of initializer can be nested inside braces to initialize
+structures or arrays that contain a <code>char</code>-array.
+</p>
+<p>In like manner, you can use a wide string constant to initialize
+an array of <code>wchar_t</code>.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Designated-Inits.html" accesskey="n" rel="next">Designated Inits</a>, Previous: <a href="Variable-Declarations.html" accesskey="p" rel="prev">Variable Declarations</a>, Up: <a href="Variables.html" accesskey="u" rel="up">Variables</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Inline-Function-Definitions.html
===================================================================
--- public/doc/gnu-c/Inline-Function-Definitions.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Inline-Function-Definitions.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,194 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Inline Function Definitions (GNU C Language Manual)</title>
+
+<meta name="description" content="Inline Function Definitions (GNU C Language Manual)">
+<meta name="keywords" content="Inline Function Definitions (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Advanced-Definitions.html" rel="up" title="Advanced Definitions">
+<link href="Obsolete-Definitions.html" rel="next" title="Obsolete Definitions">
+<link href="Nested-Functions.html" rel="prev" title="Nested Functions">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Inline-Function-Definitions"></span><div class="header">
+<p>
+Previous: <a href="Nested-Functions.html" accesskey="p" rel="prev">Nested Functions</a>, Up: <a href="Advanced-Definitions.html" accesskey="u" rel="up">Advanced Definitions</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>
+</div>
+<hr>
+<span id="Inline-Function-Definitions-1"></span><h4 class="subsection">22.7.4 Inline Function Definitions</h4>
+<span id="index-inline-function-definitions"></span>
+<span id="index-function-definitions_002c-inline"></span>
+<span id="index-inline"></span>
+
+<p>To declare a function inline, use the <code>inline</code> keyword in its
+definition.  Here&rsquo;s a simple function that takes a pointer-to-<code>int</code>
+and increments the integer stored there&mdash;declared inline.
+</p>
+<div class="example">
+<pre class="example">struct list
+{
+  struct list *first, *second;
+};
+
+inline struct list *
+list_first (struct list *p)
+{
+  return p-&gt;first;  
+}
+
+inline struct list *
+list_second (struct list *p)
+{
+  return p-&gt;second;  
+}
+</pre></div>
+
+<p>optimized compilation can substitute the inline function&rsquo;s body for
+any call to it.  This is called <em>inlining</em> the function.  It
+makes the code that contains the call run faster, significantly so if
+the inline function is small.
+</p>
+<p>Here&rsquo;s a function that uses <code>pair_second</code>:
+</p>
+<div class="example">
+<pre class="example">int
+pairlist_length (struct list *l)
+{
+  int length = 0;
+  while (l)
+    {
+      length++;
+      l = pair_second (l);
+    }
+  return length;
+}
+</pre></div>
+
+<p>Substituting the code of <code>pair_second</code> into the definition of
+<code>pairlist_length</code> results in this code, in effect:
+</p>
+<div class="example">
+<pre class="example">int
+pairlist_length (struct list *l)
+{
+  int length = 0;
+  while (l)
+    {
+      length++;
+      l = l-&gt;second;
+    }
+  return length;
+}
+</pre></div>
+
+<p>Since the definition of <code>pair_second</code> does not say <code>extern</code>
+or <code>static</code>, that definition is used only for inlining.  It
+doesn&rsquo;t generate code that can be called at run time.  If not all the
+calls to the function are inlined, there must be a definition of the
+same function name in another module for them to call.
+</p>
+<span id="index-inline-functions_002c-omission-of"></span>
+<p>Adding <code>static</code> to an inline function definition means the
+function definition is limited to this compilation module.  Also, it
+generates run-time code if necessary for the sake of any calls that
+were not inlined.  If all calls are inlined then the function
+definition does not generate run-time code, but you can force
+generation of run-time code with the option
+<samp>-fkeep-inline-functions</samp>.
+</p>
+<span id="index-extern-inline-function"></span>
+<p>Specifying <code>extern</code> along with <code>inline</code> means the function is
+external and generates run-time code to be called from other
+separately compiled modules, as well as inlined.  You can define the
+function as <code>inline</code> without <code>extern</code> in other modules so as
+to inline calls to the same function in those modules.
+</p>
+<p>Why are some calls not inlined?  First of all, inlining is an
+optimization, so non-optimized compilation does not inline.
+</p>
+<p>Some calls cannot be inlined for technical reasons.  Also, certain
+usages in a function definition can make it unsuitable for inline
+substitution.  Among these usages are: variadic functions, use of
+<code>alloca</code>, use of computed goto (see <a href="Labels-as-Values.html">Labels as Values</a>), and
+use of nonlocal goto.  The option <samp>-Winline</samp> requests a warning
+when a function marked <code>inline</code> is unsuitable to be inlined.  The
+warning explains what obstacle makes it unsuitable.
+</p>
+<p>Just because a call <em>can</em> be inlined does not mean it
+<em>should</em> be inlined.  The GNU C compiler weighs costs and
+benefits to decide whether inlining a particular call is advantageous.
+</p>
+<p>You can force inlining of all calls to a given function that can be
+inlined, even in a non-optimized compilation. by specifying the
+&lsquo;<samp>always_inline</samp>&rsquo; attribute for the function, like this:
+</p>
+<div class="example">
+<pre class="example">/* <span class="roman">Prototype.</span>  */
+inline void foo (const char) __attribute__((always_inline));
+</pre></div>
+
+<p>This is a GNU C extension.  See <a href="Attributes.html">Attributes</a>.
+</p>
+<p>A function call may be inlined even if not declared <code>inline</code> in
+special cases where the compiler can determine this is correct and
+desirable.  For instance, when a static function is called only once,
+it will very likely be inlined.  With <samp>-flto</samp>, link-time
+optimization, any function might be inlined.  To absolutely prevent
+inlining of a specific function, specify
+<code>__attribute__((__noinline__))</code> in the function&rsquo;s definition.
+</p>
+<hr>
+<div class="header">
+<p>
+Previous: <a href="Nested-Functions.html" accesskey="p" rel="prev">Nested Functions</a>, Up: <a href="Advanced-Definitions.html" accesskey="u" rel="up">Advanced Definitions</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Integer-Arithmetic.html
===================================================================
--- public/doc/gnu-c/Integer-Arithmetic.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Integer-Arithmetic.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,119 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Integer Arithmetic (GNU C Language Manual)</title>
+
+<meta name="description" content="Integer Arithmetic (GNU C Language Manual)">
+<meta name="keywords" content="Integer Arithmetic (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Arithmetic.html" rel="up" title="Arithmetic">
+<link href="Integer-Overflow.html" rel="next" title="Integer Overflow">
+<link href="Basic-Arithmetic.html" rel="prev" title="Basic Arithmetic">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Integer-Arithmetic"></span><div class="header">
+<p>
+Next: <a href="Integer-Overflow.html" accesskey="n" rel="next">Integer Overflow</a>, Previous: <a href="Basic-Arithmetic.html" accesskey="p" rel="prev">Basic Arithmetic</a>, Up: <a href="Arithmetic.html" accesskey="u" rel="up">Arithmetic</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>
+</div>
+<hr>
+<span id="Integer-Arithmetic-1"></span><h3 class="section">6.2 Integer Arithmetic</h3>
+<span id="index-integer-arithmetic"></span>
+
+<p>Each of the basic arithmetic operations in C has two variants for
+integers: <em>signed</em> and <em>unsigned</em>.  The choice is determined
+by the data types of their operands.
+</p>
+<p>Each integer data type in C is either <em>signed</em> or <em>unsigned</em>.
+A signed type can hold a range of positive and negative numbers, with
+zero near the middle of the range.  An unsigned type can hold only
+nonnegative numbers; its range starts with zero and runs upward.
+</p>
+<p>The most basic integer types are <code>int</code>, which normally can hold
+numbers from -2,147,483,648 to 2,147,483,647, and <code>unsigned
+int</code>, which normally can hold numbers from 0 to 4,294.967,295.  (This
+assumes <code>int</code> is 32 bits wide, always true for GNU C on real
+computers but not always on embedded controllers.)  See <a href="Integer-Types.html">Integer Types</a>, for full information about integer types.
+</p>
+<p>When a basic arithmetic operation is given two signed operands, it
+does signed arithmetic.  Given two unsigned operands, it does
+unsigned arithmetic.
+</p>
+<p>If one operand is <code>unsigned int</code> and the other is <code>int</code>, the
+operator treats them both as unsigned.  More generally, the common
+type of the operands determines whether the operation is signed or
+not.  See <a href="Common-Type.html">Common Type</a>.
+</p>
+<p>Printing the results of unsigned arithmetic with <code>printf</code> using
+&lsquo;<samp>%d</samp>&rsquo; can produce surprising results for values far away from
+zero.  Even though the rules above say that the computation was done
+with unsigned arithmetic, the printed result may appear to be signed!
+</p>
+<p>The explanation is that the bit pattern resulting from addition,
+subtraction or multiplication is actually the same for signed and
+unsigned operations.  The difference is only in the data type of the
+result, which affects the <em>interpretation</em> of the result bit pattern,
+and whether the arithmetic operation can overflow (see the next section).
+</p>
+<p>But &lsquo;<samp>%d</samp>&rsquo; doesn&rsquo;t know its argument&rsquo;s data type.  It sees only the
+value&rsquo;s bit pattern, and it is defined to interpret that as
+<code>signed int</code>.  To print it as unsigned requires using &lsquo;<samp>%u</samp>&rsquo;
+instead of &lsquo;<samp>%d</samp>&rsquo;.  See <a href="https://www.gnu.org/software/libc/manual/html_node/Formatted-Output.html#Formatted-Output">The GNU C Library</a> in <cite>The GNU C Library Reference Manual</cite>.
+</p>
+<p>Arithmetic in C never operates directly on narrow integer types (those
+with fewer bits than <code>int</code>; <a href="Narrow-Integers.html">Narrow Integers</a>).  Instead it
+&ldquo;promotes&rdquo; them to <code>int</code>.  See <a href="Operand-Promotions.html">Operand Promotions</a>.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Integer-Overflow.html" accesskey="n" rel="next">Integer Overflow</a>, Previous: <a href="Basic-Arithmetic.html" accesskey="p" rel="prev">Basic Arithmetic</a>, Up: <a href="Arithmetic.html" accesskey="u" rel="up">Arithmetic</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Integer-Const-Type.html
===================================================================
--- public/doc/gnu-c/Integer-Const-Type.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Integer-Const-Type.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,113 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Integer Const Type (GNU C Language Manual)</title>
+
+<meta name="description" content="Integer Const Type (GNU C Language Manual)">
+<meta name="keywords" content="Integer Const Type (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Constants.html" rel="up" title="Constants">
+<link href="Floating-Constants.html" rel="next" title="Floating Constants">
+<link href="Integer-Constants.html" rel="prev" title="Integer Constants">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Integer-Const-Type"></span><div class="header">
+<p>
+Next: <a href="Floating-Constants.html" accesskey="n" rel="next">Floating Constants</a>, Previous: <a href="Integer-Constants.html" accesskey="p" rel="prev">Integer Constants</a>, Up: <a href="Constants.html" accesskey="u" rel="up">Constants</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>
+</div>
+<hr>
+<span id="Integer-Constant-Data-Types"></span><h3 class="section">12.2 Integer Constant Data Types</h3>
+<span id="index-integer-constant-data-types"></span>
+<span id="index-constant-data-types_002c-integer"></span>
+<span id="index-types-of-integer-constants"></span>
+
+<p>The type of an integer constant is normally <code>int</code>, if the value
+fits in that type, but here are the complete rules.  The type
+of an integer constant is the first one in this sequence that can
+properly represent the value,
+</p>
+<ol>
+<li> <code>int</code>
+</li><li> <code>unsigned int</code>
+</li><li> <code>long int</code>
+</li><li> <code>unsigned long int</code>
+</li><li> <code>long long int</code>
+</li><li> <code>unsigned long long int</code>
+</li></ol>
+
+<p>and that isn&rsquo;t excluded by the following rules.
+</p>
+<p>If the constant has &lsquo;<samp>l</samp>&rsquo; or &lsquo;<samp>L</samp>&rsquo; as a suffix, that excludes the
+first two types (non-<code>long</code>).
+</p>
+<p>If the constant has &lsquo;<samp>ll</samp>&rsquo; or &lsquo;<samp>LL</samp>&rsquo; as a suffix, that excludes
+first four types (non-<code>long long</code>).
+</p>
+<p>If the constant has &lsquo;<samp>u</samp>&rsquo; or &lsquo;<samp>U</samp>&rsquo; as a suffix, that excludes
+the signed types.
+</p>
+<p>Otherwise, if the constant is decimal, that excludes the unsigned
+types.
+</p>
+<p>Here are some examples of the suffixes.
+</p>
+<div class="example">
+<pre class="example">3000000000u      // <span class="roman">three billion as <code>unsigned int</code>.</span>
+0LL              // <span class="roman">zero as a <code>long long int</code>.</span>
+0403l            // <span class="roman">259 as a <code>long int</code>.</span>
+</pre></div>
+
+<p>Suffixes in integer constants are rarely used.  When the precise type
+is important, it is cleaner to convert explicitly (see <a href="Explicit-Type-Conversion.html">Explicit Type Conversion</a>).
+</p>
+<p>See <a href="Integer-Types.html">Integer Types</a>.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Integer-Constants.html
===================================================================
--- public/doc/gnu-c/Integer-Constants.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Integer-Constants.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,126 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Integer Constants (GNU C Language Manual)</title>
+
+<meta name="description" content="Integer Constants (GNU C Language Manual)">
+<meta name="keywords" content="Integer Constants (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Constants.html" rel="up" title="Constants">
+<link href="Integer-Const-Type.html" rel="next" title="Integer Const Type">
+<link href="Constants.html" rel="prev" title="Constants">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Integer-Constants"></span><div class="header">
+<p>
+Next: <a href="Integer-Const-Type.html" accesskey="n" rel="next">Integer Const Type</a>, Up: <a href="Constants.html" accesskey="u" rel="up">Constants</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>
+</div>
+<hr>
+<span id="Integer-Constants-1"></span><h3 class="section">12.1 Integer Constants</h3>
+<span id="index-integer-constants"></span>
+<span id="index-constants_002c-integer"></span>
+
+<p>An integer constant consists of a number to specify the value,
+followed optionally by suffix letters to specify the data type.
+</p>
+<p>The simplest integer constants are numbers written in base 10
+(decimal), such as <code>5</code>, <code>77</code>, and <code>403</code>.  A decimal
+constant cannot start with the character &lsquo;<samp>0</samp>&rsquo; (zero) because
+that makes the constant octal.
+</p>
+<p>You can get the effect of a negative integer constant by putting a
+minus sign at the beginning.  Grammatically speaking, that is an
+arithmetic expression rather than a constant, but it behaves just like
+a true constant.
+</p>
+<p>Integer constants can also be written in octal (base 8), hexadecimal
+(base 16), or binary (base 2).  An octal constant starts with the
+character &lsquo;<samp>0</samp>&rsquo; (zero), followed by any number of octal digits
+(&lsquo;<samp>0</samp>&rsquo; to &lsquo;<samp>7</samp>&rsquo;):
+</p>
+<div class="example">
+<pre class="example">0      // <span class="roman">zero</span>
+077    // <span class="roman">63</span>
+0403   // <span class="roman">259</span>
+</pre></div>
+
+<p>Pedantically speaking, the constant <code>0</code> is an octal constant, but
+we can think of it as decimal; it has the same value either way.
+</p>
+<p>A hexadecimal constant starts with &lsquo;<samp>0x</samp>&rsquo; (upper or lower case)
+followed by hex digits (&lsquo;<samp>0</samp>&rsquo; to &lsquo;<samp>9</samp>&rsquo;, as well as &lsquo;<samp>a</samp>&rsquo;
+through &lsquo;<samp>f</samp>&rsquo; in upper or lower case):
+</p>
+<div class="example">
+<pre class="example">0xff   // <span class="roman">255</span>
+0XA0   // <span class="roman">160</span>
+0xffFF // <span class="roman">65535</span>
+</pre></div>
+
+<span id="index-binary-integer-constants"></span>
+<p>A binary constant starts with &lsquo;<samp>0b</samp>&rsquo; (upper or lower case) followed
+by bits (each represented by the characters &lsquo;<samp>0</samp>&rsquo; or &lsquo;<samp>1</samp>&rsquo;):
+</p>
+<div class="example">
+<pre class="example">0b101  // <span class="roman">5</span>
+</pre></div>
+
+<p>Binary constants are a GNU C extension, not part of the C standard.
+</p>
+<p>Sometimes a space is needed after an integer constant to avoid
+lexical confusion with the following tokens.  See <a href="Invalid-Numbers.html">Invalid Numbers</a>.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Integer-Const-Type.html" accesskey="n" rel="next">Integer Const Type</a>, Up: <a href="Constants.html" accesskey="u" rel="up">Constants</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Integer-Conversion.html
===================================================================
--- public/doc/gnu-c/Integer-Conversion.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Integer-Conversion.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,95 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Integer Conversion (GNU C Language Manual)</title>
+
+<meta name="description" content="Integer Conversion (GNU C Language Manual)">
+<meta name="keywords" content="Integer Conversion (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Integer-Types.html" rel="up" title="Integer Types">
+<link href="Boolean-Type.html" rel="next" title="Boolean Type">
+<link href="Narrow-Integers.html" rel="prev" title="Narrow Integers">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Integer-Conversion"></span><div class="header">
+<p>
+Next: <a href="Boolean-Type.html" accesskey="n" rel="next">Boolean Type</a>, Previous: <a href="Narrow-Integers.html" accesskey="p" rel="prev">Narrow Integers</a>, Up: <a href="Integer-Types.html" accesskey="u" rel="up">Integer Types</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>
+</div>
+<hr>
+<span id="Conversion-among-Integer-Types"></span><h4 class="subsection">11.1.4 Conversion among Integer Types</h4>
+
+<p>C converts between integer types implicitly in many situations.  It
+converts the narrow integer types, <code>char</code> and <code>short</code>, to
+<code>int</code> whenever they are used in arithmetic.  Assigning a new
+value to an integer variable (or other lvalue) converts the value to
+the variable&rsquo;s type.
+</p>
+<p>You can also convert one integer type to another explicitly with a
+<em>cast</em> operator.  See <a href="Explicit-Type-Conversion.html">Explicit Type Conversion</a>.
+</p>
+<p>The process of conversion to a wider type is straightforward: the
+value is unchanged.  The only exception is when converting a negative
+value (in a signed type, obviously) to a wider unsigned type.  In that
+case, the result is a positive value with the same bits
+(see <a href="Integers-in-Depth.html">Integers in Depth</a>).
+</p>
+<span id="index-truncation"></span>
+<p>Converting to a narrower type, also called <em>truncation</em>, involves
+discarding some of the value&rsquo;s bits.  This is not considered overflow
+(see <a href="Integer-Overflow.html">Integer Overflow</a>) because loss of significant bits is a
+normal consequence of truncation.  Likewise for conversion between
+signed and unsigned types of the same width.
+</p>
+<p>More information about conversion for assignment is in
+<a href="Assignment-Type-Conversions.html">Assignment Type Conversions</a>.  For conversion for arithmetic,
+see <a href="Argument-Promotions.html">Argument Promotions</a>.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Integer-Overflow.html
===================================================================
--- public/doc/gnu-c/Integer-Overflow.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Integer-Overflow.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,90 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Integer Overflow (GNU C Language Manual)</title>
+
+<meta name="description" content="Integer Overflow (GNU C Language Manual)">
+<meta name="keywords" content="Integer Overflow (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Arithmetic.html" rel="up" title="Arithmetic">
+<link href="Unsigned-Overflow.html" rel="next" title="Unsigned Overflow">
+<link href="Integer-Arithmetic.html" rel="prev" title="Integer Arithmetic">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Integer-Overflow"></span><div class="header">
+<p>
+Next: <a href="Mixed-Mode.html" accesskey="n" rel="next">Mixed Mode</a>, Previous: <a href="Integer-Arithmetic.html" accesskey="p" rel="prev">Integer Arithmetic</a>, Up: <a href="Arithmetic.html" accesskey="u" rel="up">Arithmetic</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>
+</div>
+<hr>
+<span id="Integer-Overflow-1"></span><h3 class="section">6.3 Integer Overflow</h3>
+<span id="index-integer-overflow"></span>
+<span id="index-overflow_002c-integer"></span>
+
+<p>When the mathematical value of an arithmetic operation doesn&rsquo;t fit in
+the range of the data type in use, that&rsquo;s called <em>overflow</em>.
+When it happens in integer arithmetic, it is <em>integer overflow</em>.
+</p>
+<p>Integer overflow happens only in arithmetic operations.  Type conversion
+operations, by definition, do not cause overflow, not even when the
+result can&rsquo;t fit in its new type.  See <a href="Integer-Conversion.html">Integer Conversion</a>.
+</p>
+<p>Signed numbers use two&rsquo;s-complement representation, in which the most
+negative number lacks a positive counterpart (see <a href="Integers-in-Depth.html">Integers in Depth</a>).  Thus, the unary &lsquo;<samp>-</samp>&rsquo; operator on a signed integer can
+overflow.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Unsigned-Overflow.html" accesskey="1">Unsigned Overflow</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Overlow in unsigned integer arithmetic.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Signed-Overflow.html" accesskey="2">Signed Overflow</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Overlow in signed integer arithmetic.
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Integer-Representations.html
===================================================================
--- public/doc/gnu-c/Integer-Representations.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Integer-Representations.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,178 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Integer Representations (GNU C Language Manual)</title>
+
+<meta name="description" content="Integer Representations (GNU C Language Manual)">
+<meta name="keywords" content="Integer Representations (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Integers-in-Depth.html" rel="up" title="Integers in Depth">
+<link href="Maximum-and-Minimum-Values.html" rel="next" title="Maximum and Minimum Values">
+<link href="Integers-in-Depth.html" rel="prev" title="Integers in Depth">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Integer-Representations"></span><div class="header">
+<p>
+Next: <a href="Maximum-and-Minimum-Values.html" accesskey="n" rel="next">Maximum and Minimum Values</a>, Up: <a href="Integers-in-Depth.html" accesskey="u" rel="up">Integers in Depth</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>
+</div>
+<hr>
+<span id="Integer-Representations-1"></span><h3 class="section">27.1 Integer Representations</h3>
+
+<span id="index-integer-representations"></span>
+<span id="index-representation-of-integers"></span>
+
+<p>Modern computers store integer values as binary (base-2) numbers that
+occupy a single unit of storage, typically either as an 8-bit
+<code>char</code>, a 16-bit <code>short int</code>, a 32-bit <code>int</code>, or
+possibly, a 64-bit <code>long long int</code>.  Whether a <code>long int</code> is
+a 32-bit or a 64-bit value is system dependent.<a id="DOCF11" href="#FOOT11"><sup>11</sup></a>
+</p>
+<span id="index-CHAR_005fBIT"></span>
+<p>The macro <code>CHAR_BIT</code>, defined in <samp>limits.h</samp>, gives the number
+of bits in type <code>char</code>.  On any real operating system, the value
+is 8.
+</p>
+<p>The fixed sizes of numeric types necessarily limits their <em>range
+of values</em>, and the particular encoding of integers decides what that
+range is.
+</p>
+<span id="index-two_0027s_002dcomplement-representation"></span>
+<p>For unsigned integers, the entire space is used to represent a
+nonnegative value.  Signed integers are stored using
+<em>two&rsquo;s-complement representation</em>: a signed integer with <var>n</var>
+bits has a range from <em>-2<sup>(<var>n</var> - 1)</sup></em> to -1 to 0
+to 1 to <em>+2<sup>(<var>n</var> - 1)</sup> - 1</em>, inclusive.  The leftmost, or
+high-order, bit is called the <em>sign bit</em>.
+</p>
+
+<p>There is only one value that means zero, and the most negative number
+lacks a positive counterpart.  As a result, negating that number
+causes overflow; in practice, its result is that number back again.
+For example, a two&rsquo;s-complement signed 8-bit integer can represent all
+decimal numbers from -128 to +127.  We will revisit that
+peculiarity shortly.
+</p>
+<p>Decades ago, there were computers that didn&rsquo;t use two&rsquo;s-complement
+representation for integers (see <a href="Integers-in-Depth.html">Integers in Depth</a>), but they are
+long gone and not worth any effort to support.
+</p>
+
+<p>When an arithmetic operation produces a value that is too big to
+represent, the operation is said to <em>overflow</em>.  In C, integer
+overflow does not interrupt the control flow or signal an error.
+What it does depends on signedness.
+</p>
+<p>For unsigned arithmetic, the result of an operation that overflows is
+the <var>n</var> low-order bits of the correct value.  If the correct value
+is representable in <var>n</var> bits, that is always the result;
+thus we often say that &ldquo;integer arithmetic is exact,&rdquo; omitting the
+crucial qualifying phrase &ldquo;as long as the exact result is
+representable.&rdquo;
+</p>
+<p>In principle, a C program should be written so that overflow never
+occurs for signed integers, but in GNU C you can specify various ways
+of handling such overflow (see <a href="Integer-Overflow.html">Integer Overflow</a>).
+</p>
+<p>Integer representations are best understood by looking at a table for
+a tiny integer size; here are the possible values for an integer with
+three bits:
+</p>
+<table>
+<thead><tr><th width="25%">Unsigned</th><th width="25%">Signed</th><th width="25%">Bits</th><th width="25%">2s Complement</th></tr></thead>
+<tr><td width="25%">0</td><td width="25%">0</td><td width="25%">000</td><td width="25%">000 (0)</td></tr>
+<tr><td width="25%">1</td><td width="25%">1</td><td width="25%">001</td><td width="25%">111 (-1)</td></tr>
+<tr><td width="25%">2</td><td width="25%">2</td><td width="25%">010</td><td width="25%">110 (-2)</td></tr>
+<tr><td width="25%">3</td><td width="25%">3</td><td width="25%">011</td><td width="25%">101 (-3)</td></tr>
+<tr><td width="25%">4</td><td width="25%">-4</td><td width="25%">100</td><td width="25%">100 (-4)</td></tr>
+<tr><td width="25%">5</td><td width="25%">-3</td><td width="25%">101</td><td width="25%">011 (3)</td></tr>
+<tr><td width="25%">6</td><td width="25%">-2</td><td width="25%">110</td><td width="25%">010 (2)</td></tr>
+<tr><td width="25%">7</td><td width="25%">-1</td><td width="25%">111</td><td width="25%">001 (1)</td></tr>
+</table>
+
+<p>The parenthesized decimal numbers in the last column represent the
+signed meanings of the two&rsquo;s-complement of the line&rsquo;s value.  Recall
+that, in two&rsquo;s-complement encoding, the high-order bit is 0 when
+the number is nonnegative.
+</p>
+<p>We can now understand the peculiar behavior of negation of the
+most negative two&rsquo;s-complement integer: start with 0b100,
+invert the bits to get 0b011, and add 1: we get
+0b100, the value we started with.
+</p>
+<p>We can also see overflow behavior in two&rsquo;s-complement:
+</p>
+<div class="example">
+<pre class="example">3 + 1 = 0b011 + 0b001 = 0b100 = (-4)
+3 + 2 = 0b011 + 0b010 = 0b101 = (-3)
+3 + 3 = 0b011 + 0b011 = 0b110 = (-2)
+</pre></div>
+
+<p>A sum of two nonnegative signed values that overflows has a 1 in the
+sign bit, so the exact positive result is truncated to a negative
+value.
+</p>
+
+<div class="footnote">
+<hr>
+<h4 class="footnotes-heading">Footnotes</h4>
+
+<h5><a id="FOOT11" href="#DOCF11">(11)</a></h3>
+<p>In theory,
+any of these types could have some other size, bit it&rsquo;s not worth even
+a minute to cater to that possibility.  It never happens on
+GNU/Linux.</p>
+</div>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Maximum-and-Minimum-Values.html" accesskey="n" rel="next">Maximum and Minimum Values</a>, Up: <a href="Integers-in-Depth.html" accesskey="u" rel="up">Integers in Depth</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Integer-Types.html
===================================================================
--- public/doc/gnu-c/Integer-Types.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Integer-Types.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,93 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Integer Types (GNU C Language Manual)</title>
+
+<meta name="description" content="Integer Types (GNU C Language Manual)">
+<meta name="keywords" content="Integer Types (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Primitive-Types.html" rel="up" title="Primitive Types">
+<link href="Basic-Integers.html" rel="next" title="Basic Integers">
+<link href="Primitive-Types.html" rel="prev" title="Primitive Types">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Integer-Types"></span><div class="header">
+<p>
+Next: <a href="Floating_002dPoint-Data-Types.html" accesskey="n" rel="next">Floating-Point Data Types</a>, Up: <a href="Primitive-Types.html" accesskey="u" rel="up">Primitive Types</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>
+</div>
+<hr>
+<span id="Integer-Data-Types"></span><h3 class="section">11.1 Integer Data Types</h3>
+<span id="index-integer-types"></span>
+<span id="index-types_002c-integer"></span>
+
+<p>Here we describe all the integer types and their basic
+characteristics.  See <a href="Integers-in-Depth.html">Integers in Depth</a>, for more information about
+the bit-level integer data representations and arithmetic.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Basic-Integers.html" accesskey="1">Basic Integers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Overview of the various kinds of integers.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Signed-and-Unsigned-Types.html" accesskey="2">Signed and Unsigned Types</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Integers can either hold both negative and
+                                  non-negative values, or only non-negative.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Narrow-Integers.html" accesskey="3">Narrow Integers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">When to use smaller integer types.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Integer-Conversion.html" accesskey="4">Integer Conversion</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Casting a value from one integer type
+                                  to another.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Boolean-Type.html" accesskey="5">Boolean Type</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">An integer type for boolean values.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Integer-Variations.html" accesskey="6">Integer Variations</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Sizes of integer types can vary
+                                  across platforms.
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Integer-Variations.html
===================================================================
--- public/doc/gnu-c/Integer-Variations.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Integer-Variations.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,106 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Integer Variations (GNU C Language Manual)</title>
+
+<meta name="description" content="Integer Variations (GNU C Language Manual)">
+<meta name="keywords" content="Integer Variations (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Integer-Types.html" rel="up" title="Integer Types">
+<link href="Floating_002dPoint-Data-Types.html" rel="next" title="Floating-Point Data Types">
+<link href="Boolean-Type.html" rel="prev" title="Boolean Type">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Integer-Variations"></span><div class="header">
+<p>
+Previous: <a href="Boolean-Type.html" accesskey="p" rel="prev">Boolean Type</a>, Up: <a href="Integer-Types.html" accesskey="u" rel="up">Integer Types</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>
+</div>
+<hr>
+<span id="Integer-Variations-1"></span><h4 class="subsection">11.1.6 Integer Variations</h4>
+
+<p>The integer types of C have standard <em>names</em>, but what they
+<em>mean</em> varies depending on the kind of platform in use:
+which kind of computer, which operating system, and which compiler.
+It may even depend on the compiler options used.
+</p>
+<p>Plain <code>char</code> may be signed or unsigned; this depends on the
+platform, too.  Even for GNU C, there is no general rule.
+</p>
+<p>In theory, all of the integer types&rsquo; sizes can vary.  <code>char</code> is
+always considered one &ldquo;byte&rdquo; for C, but it is not necessarily an
+8-bit byte; on some platforms it may be more than 8 bits.  ISO C
+specifies only that none of these types is narrower than the ones
+above it in the list in <a href="Basic-Integers.html">Basic Integers</a>, and that <code>short</code>
+has at least 16 bits.
+</p>
+<p>It is possible that in the future GNU C will support platforms where
+<code>int</code> is 64 bits long.  In practice, however, on today&rsquo;s real
+computers, there is little variation; you can rely on the table
+given previously (see <a href="Basic-Integers.html">Basic Integers</a>).
+</p>
+<p>To be completely sure of the size of an integer type,
+use the types <code>int16_t</code>, <code>int32_t</code> and <code>int64_t</code>.
+Their corresponding unsigned types add &lsquo;<samp>u</samp>&rsquo; at the front.
+To define these, include the header file <samp>stdint.h</samp>.
+</p>
+<p>The GNU C Compiler compiles for some embedded controllers that use two
+bytes for <code>int</code>.  On some, <code>int</code> is just one &ldquo;byte,&rdquo; and
+so is <code>short int</code>&mdash;but that &ldquo;byte&rdquo; may contain 16 bits or even
+32 bits.  These processors can&rsquo;t support an ordinary operating system
+(they may have their own specialized operating systems), and most C
+programs do not try to support them.
+</p>
+<hr>
+<div class="header">
+<p>
+Previous: <a href="Boolean-Type.html" accesskey="p" rel="prev">Boolean Type</a>, Up: <a href="Integer-Types.html" accesskey="u" rel="up">Integer Types</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Integers-in-Depth.html
===================================================================
--- public/doc/gnu-c/Integers-in-Depth.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Integers-in-Depth.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,80 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Integers in Depth (GNU C Language Manual)</title>
+
+<meta name="description" content="Integers in Depth (GNU C Language Manual)">
+<meta name="keywords" content="Integers in Depth (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html" rel="up" title="Top">
+<link href="Integer-Representations.html" rel="next" title="Integer Representations">
+<link href="Null-Directive.html" rel="prev" title="Null Directive">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Integers-in-Depth"></span><div class="header">
+<p>
+Next: <a href="Floating-Point-in-Depth.html" accesskey="n" rel="next">Floating Point in Depth</a>, Previous: <a href="Preprocessing.html" accesskey="p" rel="prev">Preprocessing</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</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>
+</div>
+<hr>
+<span id="Integers-in-Depth-1"></span><h2 class="chapter">27 Integers in Depth</h2>
+
+<p>This chapter explains the machine-level details of integer types: how
+they are represented as bits in memory, and the range of possible
+values for each integer type.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Integer-Representations.html" accesskey="1">Integer Representations</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How integer values appear in memory.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Maximum-and-Minimum-Values.html" accesskey="2">Maximum and Minimum Values</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Value ranges of integer types.
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Intertwined-Incomplete-Types.html
===================================================================
--- public/doc/gnu-c/Intertwined-Incomplete-Types.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Intertwined-Incomplete-Types.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,102 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Intertwined Incomplete Types (GNU C Language Manual)</title>
+
+<meta name="description" content="Intertwined Incomplete Types (GNU C Language Manual)">
+<meta name="keywords" content="Intertwined Incomplete Types (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Structures.html" rel="up" title="Structures">
+<link href="Type-Tags.html" rel="next" title="Type Tags">
+<link href="Incomplete-Types.html" rel="prev" title="Incomplete Types">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Intertwined-Incomplete-Types"></span><div class="header">
+<p>
+Next: <a href="Type-Tags.html" accesskey="n" rel="next">Type Tags</a>, Previous: <a href="Incomplete-Types.html" accesskey="p" rel="prev">Incomplete Types</a>, Up: <a href="Structures.html" accesskey="u" rel="up">Structures</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>
+</div>
+<hr>
+<span id="Intertwined-Incomplete-Types-1"></span><h3 class="section">15.19 Intertwined Incomplete Types</h3>
+
+<p>When several structure types contain pointers to each other, you can
+define the types in any order because pointers to types that come
+later are incomplete types.  Thus, 
+Here is an example.
+</p>
+<div class="example">
+<pre class="example">/* <span class="roman">An employee record points to a group.</span>  */
+struct employee
+{
+  char *name;
+  <span class="roman">&hellip;</span>
+  struct group *group;  /* <span class="roman">incomplete type.</span>  */
+  <span class="roman">&hellip;</span>
+};
+
+/* <span class="roman">An employee list points to employees.</span>  */
+struct employee_list
+{
+  struct employee *this_one;
+  struct employee_list *next;  /* <span class="roman">incomplete type.</span>  */
+  <span class="roman">&hellip;</span>
+};
+  
+/* <span class="roman">A group points to one employee_list.</span>  */
+struct group
+{
+  char *name;
+  <span class="roman">&hellip;</span>
+  struct employee_list *employees;
+  <span class="roman">&hellip;</span>
+};
+</pre></div>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Invalid-Dereference.html
===================================================================
--- public/doc/gnu-c/Invalid-Dereference.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Invalid-Dereference.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,101 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Invalid Dereference (GNU C Language Manual)</title>
+
+<meta name="description" content="Invalid Dereference (GNU C Language Manual)">
+<meta name="keywords" content="Invalid Dereference (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Pointers.html" rel="up" title="Pointers">
+<link href="Void-Pointers.html" rel="next" title="Void Pointers">
+<link href="Null-Pointers.html" rel="prev" title="Null Pointers">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Invalid-Dereference"></span><div class="header">
+<p>
+Next: <a href="Void-Pointers.html" accesskey="n" rel="next">Void Pointers</a>, Previous: <a href="Null-Pointers.html" accesskey="p" rel="prev">Null Pointers</a>, Up: <a href="Pointers.html" accesskey="u" rel="up">Pointers</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>
+</div>
+<hr>
+<span id="Dereferencing-Null-or-Invalid-Pointers"></span><h3 class="section">14.7 Dereferencing Null or Invalid Pointers</h3>
+
+<p>Trying to dereference a null pointer is an error.  On most platforms,
+it generally causes a signal, usually <code>SIGSEGV</code>
+(see <a href="Signals.html">Signals</a>).
+</p>
+<div class="example">
+<pre class="example">char *foo = NULL;
+c = *foo;    /* <span class="roman">This causes a signal and terminates.</span>  */
+</pre></div>
+
+<p>Likewise a pointer that has the wrong alignment for the target data type
+(on most types of computer), or points to a part of memory that has
+not been allocated in the process&rsquo;s address space.
+</p>
+<p>The signal terminates the program, unless the program has arranged to
+handle the signal (see <a href="https://www.gnu.org/software/libc/manual/html_node/Signal-Handling.html#Signal-Handling">The GNU C Library</a> in <cite>The GNU C Library Reference Manual</cite>).
+</p>
+<p>However, the signal might not happen if the dereference is optimized
+away.  In the example above, if you don&rsquo;t subsequently use the value
+of <code>c</code>, GCC might optimize away the code for <code>*foo</code>.  You
+can prevent such optimization using the <code>volatile</code> qualifier, as
+shown here:
+</p>
+<div class="example">
+<pre class="example">volatile char *p;
+volatile char c;
+c = *p;
+</pre></div>
+
+<p>You can use this to test whether <code>p</code> points to unallocated
+memory.  Set up a signal handler first, so the signal won&rsquo;t terminate
+the program.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Invalid-Numbers.html
===================================================================
--- public/doc/gnu-c/Invalid-Numbers.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Invalid-Numbers.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,80 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Invalid Numbers (GNU C Language Manual)</title>
+
+<meta name="description" content="Invalid Numbers (GNU C Language Manual)">
+<meta name="keywords" content="Invalid Numbers (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Constants.html" rel="up" title="Constants">
+<link href="Character-Constants.html" rel="next" title="Character Constants">
+<link href="Imaginary-Constants.html" rel="prev" title="Imaginary Constants">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Invalid-Numbers"></span><div class="header">
+<p>
+Next: <a href="Character-Constants.html" accesskey="n" rel="next">Character Constants</a>, Previous: <a href="Imaginary-Constants.html" accesskey="p" rel="prev">Imaginary Constants</a>, Up: <a href="Constants.html" accesskey="u" rel="up">Constants</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>
+</div>
+<hr>
+<span id="Invalid-Numbers-1"></span><h3 class="section">12.5 Invalid Numbers</h3>
+
+<p>Some number-like constructs which are not really valid as numeric
+constants are treated as numbers in preprocessing directives.  If
+these constructs appear outside of preprocessing, they are erroneous.
+See <a href="Preprocessing-Tokens.html">Preprocessing Tokens</a>.
+</p>
+<p>Sometimes we need to insert spaces to separate tokens so that they
+won&rsquo;t be combined into a single number-like construct.  For example,
+<code>0xE+12</code> is a preprocessing number that is not a valid numeric
+constant, so it is a syntax error.  If what we want is the three
+tokens <code>0xE&nbsp;+&nbsp;12<!-- /@w --></code>, we have to use those spaces as separators.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Invalid-Optimizations.html
===================================================================
--- public/doc/gnu-c/Invalid-Optimizations.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Invalid-Optimizations.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,108 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Invalid Optimizations (GNU C Language Manual)</title>
+
+<meta name="description" content="Invalid Optimizations (GNU C Language Manual)">
+<meta name="keywords" content="Invalid Optimizations (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Floating-Point-in-Depth.html" rel="up" title="Floating Point in Depth">
+<link href="Exception-Flags.html" rel="next" title="Exception Flags">
+<link href="Special-Float-Values.html" rel="prev" title="Special Float Values">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Invalid-Optimizations"></span><div class="header">
+<p>
+Next: <a href="Exception-Flags.html" accesskey="n" rel="next">Exception Flags</a>, Previous: <a href="Special-Float-Values.html" accesskey="p" rel="prev">Special Float Values</a>, Up: <a href="Floating-Point-in-Depth.html" accesskey="u" rel="up">Floating Point in Depth</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>
+</div>
+<hr>
+<span id="Invalid-Optimizations-1"></span><h3 class="section">28.4 Invalid Optimizations</h3>
+<span id="index-invalid-optimizations-in-floating_002dpoint-arithmetic"></span>
+<span id="index-floating_002dpoint-arithmetic-invalid-optimizations"></span>
+
+<p>Signed zeros, Infinity, and NaN invalidate some optimizations by
+programmers and compilers that might otherwise have seemed obvious:
+</p>
+<ul>
+<li> <code>x + 0</code> and <code>x - 0</code> are not the same as <code>x</code> when
+<code>x</code> is zero, because the result depends on the rounding rule.
+See <a href="Rounding.html">Rounding</a>, for more about rounding rules.
+
+</li><li> <code>x * 0.0</code> is not the same as <code>0.0</code> when <code>x</code> is
+Infinity, a NaN, or negative zero.
+
+</li><li> <code>x / x</code> is not the same as <code>1.0</code> when <code>x</code> is Infinity,
+a NaN, or zero.
+
+</li><li> <code>(x - y)</code> is not the same as <code>-(y - x)</code> because when the
+operands are finite and equal, one evaluates to <code>+0</code> and the
+other to <code>-0</code>.
+
+</li><li> <code>x - x</code> is not the same as <code>0.0</code> when <var>x</var> is Infinity or
+a NaN.
+
+</li><li> <code>x == x</code> and <code>x != x</code> are not equivalent to <code>1</code> and
+<code>0</code> when <var>x</var> is a NaN.
+
+</li><li> <code>x &lt; y</code> and <code>isless (x, y)</code> are not equivalent, because the
+first sets a sticky exception flag (see <a href="Exception-Flags.html">Exception Flags</a>) when an
+operand is a NaN, whereas the second does not affect that flag.  The
+same holds for the other <code>isxxx</code> functions that are companions to
+relational operators.  See <a href="https://www.gnu.org/software/libc/manual/html_node/FP-Comparison-Functions.html#FP-Comparison-Functions">FP Comparison Functions</a> in <cite>The
+GNU C Library Reference Manual</cite>.
+
+</li></ul>
+
+<p>The <samp>-funsafe-math-optimizations</samp> option enables
+these optimizations.
+</p>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Iterative-Fibonacci.html
===================================================================
--- public/doc/gnu-c/Iterative-Fibonacci.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Iterative-Fibonacci.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,246 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Iterative Fibonacci (GNU C Language Manual)</title>
+
+<meta name="description" content="Iterative Fibonacci (GNU C Language Manual)">
+<meta name="keywords" content="Iterative Fibonacci (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="The-First-Example.html" rel="up" title="The First Example">
+<link href="Complete-Program.html" rel="next" title="Complete Program">
+<link href="Stack.html" rel="prev" title="Stack">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Iterative-Fibonacci"></span><div class="header">
+<p>
+Previous: <a href="Stack.html" accesskey="p" rel="prev">Stack</a>, Up: <a href="The-First-Example.html" accesskey="u" rel="up">The First Example</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>
+</div>
+<hr>
+<span id="Example_003a-Iterative-Fibonacci"></span><h3 class="section">1.3 Example: Iterative Fibonacci</h3>
+<span id="index-iterative-Fibonacci-function"></span>
+<span id="index-Fibonacci-function_002c-iterative"></span>
+
+<p>Here&rsquo;s a much faster algorithm for computing the same Fibonacci
+series.  It is faster for two reasons.  First, it uses <em>iteration</em>
+(that is, repetition or looping) rather than recursion, so it doesn&rsquo;t
+take time for a large number of function calls.  But mainly, it is
+faster because the number of repetitions is small&mdash;only <code><var>n</var></code>.
+</p>
+
+<div class="example">
+<pre class="example">int
+fib (int n)
+{
+  int last = 1;   /* <span class="roman">Initial value is <code>fib (1)</code>.</span>  */
+  int prev = 0;   /* <span class="roman">Initial value controls <code>fib (2)</code>.</span>  */
+  int i;
+
+  for (i = 1; i &lt; n; ++i)
+    /* <span class="roman">If <code>n</code> is 1 or less, the loop runs zero times,</span>  */
+    /* <span class="roman">since <code>i &lt; n</code> is false the first time.</span>  */
+    {
+      /* <span class="roman">Now <code>last</code> is <code>fib (<code>i</code>)</code></span>
+         <span class="roman">and <code>prev</code> is <code>fib (<code>i</code> - 1)</code>.</span>  */
+      /* <span class="roman">Compute <code>fib (<code>i</code> + 1)</code>.</span>  */
+      int next = prev + last;
+      /* <span class="roman">Shift the values down.</span>  */
+      prev = last;
+      last = next;
+      /* <span class="roman">Now <code>last</code> is <code>fib (<code>i</code> + 1)</code></span>
+         <span class="roman">and <code>prev</code> is <code>fib (<code>i</code>)</code>.</span>
+         <span class="roman">But that won&rsquo;t stay true for long,</span>
+         <span class="roman">because we are about to increment <code>i</code>.</span>  */
+    }
+
+  return last;
+}
+</pre></div>
+
+<p>This definition computes <code>fib (<var>n</var>)</code> in a time proportional
+to <code><var>n</var></code>.  The comments in the definition explain how it works: it
+advances through the series, always keeps the last two values in
+<code>last</code> and <code>prev</code>, and adds them to get the next value.
+</p>
+<p>Here are the additional C features that this definition uses:
+</p>
+<dl compact="compact">
+<dt>Internal blocks</dt>
+<dd><p>Within a function, wherever a statement is called for, you can write a
+<em>block</em>.  It looks like <code>{ <span class="roman">&hellip;</span> }</code> and contains zero or
+more statements and declarations.  (You can also use additional
+blocks as statements in a block.)
+</p>
+<p>The function body also counts as a block, which is why it can contain
+statements and declarations.
+</p>
+<p>See <a href="Blocks.html">Blocks</a>.
+</p>
+</dd>
+<dt>Declarations of local variables</dt>
+<dd><p>This function body contains declarations as well as statements.  There
+are three declarations directly in the function body, as well as a
+fourth declaration in an internal block.  Each starts with <code>int</code>
+because it declares a variable whose type is integer.  One declaration
+can declare several variables, but each of these declarations is
+simple and declares just one variable.
+</p>
+<p>Variables declared inside a block (either a function body or an
+internal block) are <em>local variables</em>.  These variables exist only
+within that block; their names are not defined outside the block, and
+exiting the block deallocates their storage.  This example declares
+four local variables: <code>last</code>, <code>prev</code>, <code>i</code>, and
+<code>next</code>.
+</p>
+<p>The most basic local variable declaration looks like this:
+</p>
+<div class="example">
+<pre class="example"><var>type</var> <var>variablename</var>;
+</pre></div>
+
+<p>For instance,
+</p>
+<div class="example">
+<pre class="example">int i;
+</pre></div>
+
+<p>declares the local variable <code>i</code> as an integer.
+See <a href="Variable-Declarations.html">Variable Declarations</a>.
+</p>
+</dd>
+<dt>Initializers</dt>
+<dd><p>When you declare a variable, you can also specify its initial value,
+like this:
+</p>
+<div class="example">
+<pre class="example"><var>type</var> <var>variablename</var> = <var>value</var>;
+</pre></div>
+
+<p>For instance,
+</p>
+<div class="example">
+<pre class="example">int last = 1;
+</pre></div>
+
+<p>declares the local variable <code>last</code> as an integer (type
+<code>int</code>) and starts it off with the value 1.  See <a href="Initializers.html">Initializers</a>.
+</p>
+</dd>
+<dt>Assignment</dt>
+<dd><p>Assignment: a specific kind of expression, written with the &lsquo;<samp>=</samp>&rsquo;
+operator, that stores a new value in a variable or other place.  Thus,
+</p>
+<div class="example">
+<pre class="example"><var>variable</var> = <var>value</var>
+</pre></div>
+
+<p>is an expression that computes <code><var>value</var></code> and stores the value in
+<code><var>variable</var></code>.  See <a href="Assignment-Expressions.html">Assignment Expressions</a>.
+</p>
+</dd>
+<dt>Expression statements</dt>
+<dd><p>An expression statement is an expression followed by a semicolon.
+That computes the value of the expression, then ignores the value.
+</p>
+<p>An expression statement is useful when the expression changes some
+data or has other side effects&mdash;for instance, with function calls, or
+with assignments as in this example.  See <a href="Expression-Statement.html">Expression Statement</a>.
+</p>
+<p>Using an expression with no side effects in an expression statement is
+pointless except in very special cases.  For instance, the expression
+statement <code>x;</code> would examine the value of <code>x</code> and ignore it.
+That is not useful.
+</p>
+</dd>
+<dt>Increment operator</dt>
+<dd><p>The increment operator is &lsquo;<samp>++</samp>&rsquo;.  <code>++i</code> is an
+expression that is short for <code>i = i + 1</code>.
+See <a href="Increment_002fDecrement.html">Increment/Decrement</a>.
+</p>
+</dd>
+<dt><code>for</code> statements</dt>
+<dd><p>A <code>for</code> statement is a clean way of executing a statement
+repeatedly&mdash;a <em>loop</em> (see <a href="Loop-Statements.html">Loop Statements</a>).  Specifically,
+</p>
+<div class="example">
+<pre class="example">for (i = 1; i &lt; n; ++i)
+  <var>body</var>
+</pre></div>
+
+<p>means to start by doing <code>i = 1</code> (set <code>i</code> to one) to prepare
+for the loop.  The loop itself consists of
+</p>
+<ul>
+<li> Testing <code>i &lt; n</code> and exiting the loop if that&rsquo;s false.
+
+</li><li> Executing <var>body</var>.
+
+</li><li> Advancing the loop (executing <code>++i</code>, which increments <code>i</code>).
+</li></ul>
+
+<p>The net result is to execute <var>body</var> with 0 in <code>i</code>,
+then with 1 in <code>i</code>, and so on, stopping just before the repetition
+where <code>i</code> would equal <code>n</code>.
+</p>
+<p>The body of the <code>for</code> statement must be one and only one
+statement.  You can&rsquo;t write two statements in a row there; if you try
+to, only the first of them will be treated as part of the loop.
+</p>
+<p>The way to put multiple statements in those places is to group them
+with a block, and that&rsquo;s what we do in this example.
+</p></dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Previous: <a href="Stack.html" accesskey="p" rel="prev">Stack</a>, Up: <a href="The-First-Example.html" accesskey="u" rel="up">The First Example</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Label-Value-Caveats.html
===================================================================
--- public/doc/gnu-c/Label-Value-Caveats.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Label-Value-Caveats.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,97 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Label Value Caveats (GNU C Language Manual)</title>
+
+<meta name="description" content="Label Value Caveats (GNU C Language Manual)">
+<meta name="keywords" content="Label Value Caveats (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Labels-as-Values.html" rel="up" title="Labels as Values">
+<link href="Statement-Exprs.html" rel="next" title="Statement Exprs">
+<link href="Label-Value-Uses.html" rel="prev" title="Label Value Uses">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Label-Value-Caveats"></span><div class="header">
+<p>
+Previous: <a href="Label-Value-Uses.html" accesskey="p" rel="prev">Label Value Uses</a>, Up: <a href="Labels-as-Values.html" accesskey="u" rel="up">Labels as Values</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>
+</div>
+<hr>
+<span id="Label-Value-Caveats-1"></span><h4 class="subsection">19.14.2 Label Value Caveats</h4>
+
+<p>Jumping to a label defined in another function does not work.
+It can cause unpredictable results.
+</p>
+<p>The best way to avoid this is to store label values only in
+automatic variables, or static variables whose names are declared
+within the function.  Never pass them as arguments.
+</p>
+<span id="index-cloning"></span>
+<p>An optimization known as <em>cloning</em> generates multiple simplified
+variants of a function&rsquo;s code, for use with specific fixed arguments.
+Using label values in certain ways, such as saving the address in one
+call to the function and using it again in another call, would make cloning
+give incorrect results.  These functions must disable cloning.
+</p>
+<p>Inlining calls to the function would also result in multiple copies of
+the code, each with its own value of the same label.  Using the label
+in a computed goto is no problem, because the computed goto inhibits
+inlining.  However, using the label value in some other way, such as
+an indication of where an error occurred, would be optimized wrong.
+These functions must disable inlining.
+</p>
+<p>To prevent inlining or cloning of a function, specify
+<code>__attribute__((__noinline__,__noclone__))</code> in its definition.
+See <a href="Attributes.html">Attributes</a>.
+</p>
+<p>When a function uses a label value in a static variable initializer,
+that automatically prevents inlining or cloning the function.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Label-Value-Uses.html
===================================================================
--- public/doc/gnu-c/Label-Value-Uses.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Label-Value-Uses.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,106 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Label Value Uses (GNU C Language Manual)</title>
+
+<meta name="description" content="Label Value Uses (GNU C Language Manual)">
+<meta name="keywords" content="Label Value Uses (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Labels-as-Values.html" rel="up" title="Labels as Values">
+<link href="Label-Value-Caveats.html" rel="next" title="Label Value Caveats">
+<link href="Labels-as-Values.html" rel="prev" title="Labels as Values">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Label-Value-Uses"></span><div class="header">
+<p>
+Next: <a href="Label-Value-Caveats.html" accesskey="n" rel="next">Label Value Caveats</a>, Up: <a href="Labels-as-Values.html" accesskey="u" rel="up">Labels as Values</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>
+</div>
+<hr>
+<span id="Label-Value-Uses-1"></span><h4 class="subsection">19.14.1 Label Value Uses</h4>
+
+<p>One use for label-valued constants is to initialize a static array to
+serve as a jump table:
+</p>
+<div class="example">
+<pre class="example">static void *array[] = { &amp;&amp;foo, &amp;&amp;bar, &amp;&amp;hack };
+</pre></div>
+
+<p>Then you can select a label with indexing, like this:
+</p>
+<div class="example">
+<pre class="example">goto *array[i];
+</pre></div>
+
+<p>Note that this does not check whether the subscript is in bounds&mdash;array
+indexing in C never checks that.
+</p>
+<p>You can make the table entries offsets instead of addresses
+by subtracting one label from the others.  Here is an example:
+</p>
+<div class="example">
+<pre class="example">static const int array[] = { &amp;&amp;foo - &amp;&amp;foo, &amp;&amp;bar - &amp;&amp;foo,
+                             &amp;&amp;hack - &amp;&amp;foo };
+goto *(&amp;&amp;foo + array[i]);
+</pre></div>
+
+<p>Using offsets is preferable in shared libraries, as it avoids the need
+for dynamic relocation of the array elements; therefore, the array can
+be read-only.
+</p>
+<p>An array of label values or offsets serves a purpose much like that of
+the <code>switch</code> statement.  The <code>switch</code> statement is cleaner,
+so use <code>switch</code> by preference when feasible.
+</p>
+<p>Another use of label values is in an interpreter for threaded code.
+The labels within the interpreter function can be stored in the
+threaded code for super-fast dispatching.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Labels-as-Values.html
===================================================================
--- public/doc/gnu-c/Labels-as-Values.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Labels-as-Values.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,113 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Labels as Values (GNU C Language Manual)</title>
+
+<meta name="description" content="Labels as Values (GNU C Language Manual)">
+<meta name="keywords" content="Labels as Values (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Statements.html" rel="up" title="Statements">
+<link href="Label-Value-Uses.html" rel="next" title="Label Value Uses">
+<link href="Local-Labels.html" rel="prev" title="Local Labels">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Labels-as-Values"></span><div class="header">
+<p>
+Next: <a href="Statement-Exprs.html" accesskey="n" rel="next">Statement Exprs</a>, Previous: <a href="Local-Labels.html" accesskey="p" rel="prev">Local Labels</a>, Up: <a href="Statements.html" accesskey="u" rel="up">Statements</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>
+</div>
+<hr>
+<span id="Labels-as-Values-1"></span><h3 class="section">19.14 Labels as Values</h3>
+<span id="index-labels-as-values"></span>
+<span id="index-computed-gotos"></span>
+<span id="index-goto-with-computed-label"></span>
+<span id="index-address-of-a-label"></span>
+
+<p>In GNU C, you can get the address of a label defined in the current
+function (or a local label defined in the containing function) with
+the unary operator &lsquo;<samp>&amp;&amp;</samp>&rsquo;.  The value has type <code>void *</code>.  This
+value is a constant and can be used wherever a constant of that type
+is valid.  For example:
+</p>
+<div class="example">
+<pre class="example">void *ptr;
+<span class="roman">&hellip;</span>
+ptr = &amp;&amp;foo;
+</pre></div>
+
+<p>To use these values requires a way to jump to one.  This is done
+with the computed goto statement<a id="DOCF5" href="#FOOT5"><sup>5</sup></a>, <code>goto *<var>exp</var>;</code>.  For example,
+</p>
+<div class="example">
+<pre class="example">goto *ptr;
+</pre></div>
+
+<p>Any expression of type <code>void *</code> is allowed.
+</p>
+<p>See <a href="goto-Statement.html">goto Statement</a>.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Label-Value-Uses.html" accesskey="1">Label Value Uses</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Examples of using label values.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Label-Value-Caveats.html" accesskey="2">Label Value Caveats</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Limitations of label values.
+</td></tr>
+</table>
+
+<div class="footnote">
+<hr>
+<h4 class="footnotes-heading">Footnotes</h4>
+
+<h5><a id="FOOT5" href="#DOCF5">(5)</a></h3>
+<p>The analogous feature in
+Fortran is called an assigned goto, but that name seems inappropriate in
+C, since you can do more with label addresses than store them in special label
+variables.</p>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Lexical-Syntax.html
===================================================================
--- public/doc/gnu-c/Lexical-Syntax.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Lexical-Syntax.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,96 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Lexical Syntax (GNU C Language Manual)</title>
+
+<meta name="description" content="Lexical Syntax (GNU C Language Manual)">
+<meta name="keywords" content="Lexical Syntax (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html" rel="up" title="Top">
+<link href="English.html" rel="next" title="English">
+<link href="Array-Example-Variations.html" rel="prev" title="Array Example Variations">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Lexical-Syntax"></span><div class="header">
+<p>
+Next: <a href="Arithmetic.html" accesskey="n" rel="next">Arithmetic</a>, Previous: <a href="Beyond-Integers.html" accesskey="p" rel="prev">Beyond Integers</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</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>
+</div>
+<hr>
+<span id="Lexical-Syntax-1"></span><h2 class="chapter">5 Lexical Syntax</h2>
+<span id="index-lexical-syntax"></span>
+<span id="index-token"></span>
+
+<p>To start the full description of the C language, we explain the
+lexical syntax and lexical units of C code.  The lexical units of a
+programming language are known as <em>tokens</em>.  This chapter covers
+all the tokens of C except for constants, which are covered in a later
+chapter (see <a href="Constants.html">Constants</a>).  One vital kind of token is the
+<em>identifier</em> (see <a href="Identifiers.html">Identifiers</a>), which is used for names of any
+kind.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="English.html" accesskey="1">English</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Write programs in English!
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Characters.html" accesskey="2">Characters</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The characters allowed in C programs.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Whitespace.html" accesskey="3">Whitespace</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The particulars of whitespace characters.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Comments.html" accesskey="4">Comments</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to include comments in C code.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Identifiers.html" accesskey="5">Identifiers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to form identifiers (names).
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Operators_002fPunctuation.html" accesskey="6">Operators/Punctuation</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Characters used as operators or punctuation.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Line-Continuation.html" accesskey="7">Line Continuation</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Splitting one line into multiple lines.
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Limitations-of-C-Arrays.html
===================================================================
--- public/doc/gnu-c/Limitations-of-C-Arrays.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Limitations-of-C-Arrays.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,120 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Limitations of C Arrays (GNU C Language Manual)</title>
+
+<meta name="description" content="Limitations of C Arrays (GNU C Language Manual)">
+<meta name="keywords" content="Limitations of C Arrays (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Arrays.html" rel="up" title="Arrays">
+<link href="Multidimensional-Arrays.html" rel="next" title="Multidimensional Arrays">
+<link href="Incomplete-Array-Types.html" rel="prev" title="Incomplete Array Types">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Limitations-of-C-Arrays"></span><div class="header">
+<p>
+Next: <a href="Multidimensional-Arrays.html" accesskey="n" rel="next">Multidimensional Arrays</a>, Previous: <a href="Incomplete-Array-Types.html" accesskey="p" rel="prev">Incomplete Array Types</a>, Up: <a href="Arrays.html" accesskey="u" rel="up">Arrays</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>
+</div>
+<hr>
+<span id="Limitations-of-C-Arrays-1"></span><h3 class="section">16.6 Limitations of C Arrays</h3>
+<span id="index-limitations-of-C-arrays"></span>
+<span id="index-first_002dclass-object"></span>
+
+<p>Arrays have quirks in C because they are not &ldquo;first-class objects&rdquo;:
+there is no way in C to operate on an array as a unit.
+</p>
+<p>The other composite objects in C, structures and unions, are
+first-class objects: a C program can copy a structure or union value
+in an assignment, or pass one as an argument to a function, or make a
+function return one.  You can&rsquo;t do those things with an array in C.
+That is because a value you can operate on never has an array type.
+</p>
+<p>An expression in C can have an array type, but that doesn&rsquo;t produce
+the array as a value.  Instead it is converted automatically to a
+pointer to the array&rsquo;s element at index zero.  The code can operate
+on the pointer, and through that on individual elements of the array,
+but it can&rsquo;t get and operate on the array as a unit.
+</p>
+<p>There are three exceptions to this conversion rule, but none of them 
+offers a way to operate on the array as a whole.
+</p>
+<p>First, &lsquo;<samp>&amp;</samp>&rsquo; applied to an expression with array type gives you the
+address of the array, as an array type.  However, you can&rsquo;t operate on the
+whole array that way&mdash;if you apply &lsquo;<samp>*</samp>&rsquo; to get the array back,
+that expression converts, as usual, to a pointer to its zeroth
+element.
+</p>
+<p>Second, the operators <code>sizeof</code>, <code>_Alignof</code>, and
+<code>typeof</code> do not convert the array to a pointer; they leave it as
+an array.  But they don&rsquo;t operate on the array&rsquo;s data&mdash;they only give
+information about its type.
+</p>
+<p>Third, a string constant used as an initializer for an array is not
+converted to a pointer&mdash;rather, the declaration copies the
+<em>contents</em> of that string in that one special case.
+</p>
+<p>You <em>can</em> copy the contents of an array, just not with an
+assignment operator.  You can do it by calling the library function
+<code>memcpy</code> or <code>memmove</code> (see <a href="https://www.gnu.org/software/libc/manual/html_node/Copying-and-Concatenation.html#Copying-and-Concatenation">The
+GNU C Library</a> in <cite>The GNU C Library Reference Manual</cite>).  Also,
+when a structure contains just an array, you can copy that structure.
+</p>
+<p>An array itself is an lvalue if it is a declared variable, or part of
+a structure or union that is an lvalue.  When you construct an array
+from elements (see <a href="Constructing-Array-Values.html">Constructing Array Values</a>), that array is not
+an lvalue.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Multidimensional-Arrays.html" accesskey="n" rel="next">Multidimensional Arrays</a>, Previous: <a href="Incomplete-Array-Types.html" accesskey="p" rel="prev">Incomplete Array Types</a>, Up: <a href="Arrays.html" accesskey="u" rel="up">Arrays</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Line-Continuation.html
===================================================================
--- public/doc/gnu-c/Line-Continuation.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Line-Continuation.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,106 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Line Continuation (GNU C Language Manual)</title>
+
+<meta name="description" content="Line Continuation (GNU C Language Manual)">
+<meta name="keywords" content="Line Continuation (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Lexical-Syntax.html" rel="up" title="Lexical Syntax">
+<link href="Arithmetic.html" rel="next" title="Arithmetic">
+<link href="Operators_002fPunctuation.html" rel="prev" title="Operators/Punctuation">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Line-Continuation"></span><div class="header">
+<p>
+Previous: <a href="Operators_002fPunctuation.html" accesskey="p" rel="prev">Operators/Punctuation</a>, Up: <a href="Lexical-Syntax.html" accesskey="u" rel="up">Lexical Syntax</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>
+</div>
+<hr>
+<span id="Line-Continuation-1"></span><h3 class="section">5.7 Line Continuation</h3>
+<span id="index-line-continuation"></span>
+<span id="index-continuation-of-lines"></span>
+
+<p>The sequence of a backslash and a newline is ignored absolutely
+anywhere in a C program.  This makes it possible to split a single
+source line into multiple lines in the source file.  GNU C tolerates
+and ignores other whitespace between the backslash and the newline.
+In particular, it always ignores a CR (carriage return) character
+there, in case some text editor decided to end the line with the CRLF
+sequence.
+</p>
+<p>The main use of line continuation in C is for macro definitions that
+would be inconveniently long for a single line (see <a href="Macros.html">Macros</a>).
+</p>
+<p>It is possible to continue a line comment onto another line with
+backslash-newline.  You can put backslash-newline in the middle of an
+identifier, even a keyword, or an operator.  You can even split
+&lsquo;<samp>/*</samp>&rsquo;, &lsquo;<samp>*/</samp>&rsquo;, and &lsquo;<samp>//</samp>&rsquo; onto multiple lines with
+backslash-newline.  Here&rsquo;s an ugly example:
+</p>
+<div class="example">
+<pre class="example">/\
+*
+*/ fo\
+o +\
+= 1\
+0;
+</pre></div>
+
+<p>That&rsquo;s equivalent to &lsquo;<samp>/* */ foo += 10;</samp>&rsquo;.
+</p>
+<p>Don&rsquo;t do those things in real programs, since they make code hard to
+read.
+</p>
+<p><strong>Note:</strong> For the sake of using certain tools on the source code, it is
+wise to end every source file with a newline character which is not
+preceded by a backslash, so that it really ends the last line.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Line-Control.html
===================================================================
--- public/doc/gnu-c/Line-Control.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Line-Control.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,124 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Line Control (GNU C Language Manual)</title>
+
+<meta name="description" content="Line Control (GNU C Language Manual)">
+<meta name="keywords" content="Line Control (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Preprocessing.html" rel="up" title="Preprocessing">
+<link href="Null-Directive.html" rel="next" title="Null Directive">
+<link href="Diagnostics.html" rel="prev" title="Diagnostics">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Line-Control"></span><div class="header">
+<p>
+Next: <a href="Null-Directive.html" accesskey="n" rel="next">Null Directive</a>, Previous: <a href="Diagnostics.html" accesskey="p" rel="prev">Diagnostics</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>
+</div>
+<hr>
+<span id="Line-Control-1"></span><h3 class="section">26.8 Line Control</h3>
+<span id="index-line-control"></span>
+
+<p>Due to C&rsquo;s widespread availability and low-level nature, it is often
+used as the target language for translation of other languages, or for
+the output of lexical analyzers and parsers (e.g., lex/flex and
+yacc/bison).  Line control enables the user to track diagnostics back
+to the location in the original language.
+</p>
+<p>The C compiler knows the location in the source file where each token
+came from: file name, starting line and column, and final line and column.
+(Column numbers are used only for error messages.)
+</p>
+<p>When a program generates C source code, as the Bison parser generator
+does, often it copies some of that C code from another file.  For
+instance parts of the output from Bison are generated from scratch or
+come from a standard parser file, but Bison copies the rest from
+Bison&rsquo;s input file.  Errors in that code, at compile time or run time,
+should refer to that file, which is the real source code.  To make that happen,
+Bison generates line-control directives that the C compiler understands.
+</p>
+<span id="index-_0023line"></span>
+<p><code>#line</code> is a directive that specifies the original line number
+and source file name for subsequent code.  <code>#line</code> has three
+variants:
+</p>
+<dl compact="compact">
+<dt><code>#line <var>linenum</var></code></dt>
+<dd><p><var>linenum</var> is a non-negative decimal integer constant.  It specifies
+the line number that should be reported for the following line of
+input.  Subsequent lines are counted from <var>linenum</var>.
+</p>
+</dd>
+<dt><code>#line <var>linenum</var> <var>filename</var></code></dt>
+<dd><p><var>linenum</var> is the same as for the first form, and has the same
+effect.  In addition, <var>filename</var> is a string constant that
+specifies the source file name.  Subsequent source lines are recorded
+as coming from that file, until something else happens to change that.
+<var>filename</var> is interpreted according to the normal rules for a
+string constant.  Backslash escapes are interpreted, in contrast to
+<code>#include</code>.
+</p>
+</dd>
+<dt><code>#line <var>anything else</var></code></dt>
+<dd><p><var>anything else</var> is checked for macro calls, which are expanded.
+The result should match one of the above two forms.
+</p></dd>
+</dl>
+
+<p><code>#line</code> directives alter the results of the <code>__FILE__</code> and
+<code>__LINE__</code> symbols from that point on.  See <a href="Predefined-Macros.html">Predefined Macros</a>.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Null-Directive.html" accesskey="n" rel="next">Null Directive</a>, Previous: <a href="Diagnostics.html" accesskey="p" rel="prev">Diagnostics</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Local-Labels.html
===================================================================
--- public/doc/gnu-c/Local-Labels.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Local-Labels.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,153 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Local Labels (GNU C Language Manual)</title>
+
+<meta name="description" content="Local Labels (GNU C Language Manual)">
+<meta name="keywords" content="Local Labels (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Statements.html" rel="up" title="Statements">
+<link href="Labels-as-Values.html" rel="next" title="Labels as Values">
+<link href="goto-Statement.html" rel="prev" title="goto Statement">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Local-Labels"></span><div class="header">
+<p>
+Next: <a href="Labels-as-Values.html" accesskey="n" rel="next">Labels as Values</a>, Previous: <a href="goto-Statement.html" accesskey="p" rel="prev">goto Statement</a>, Up: <a href="Statements.html" accesskey="u" rel="up">Statements</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>
+</div>
+<hr>
+<span id="Locally-Declared-Labels"></span><h3 class="section">19.13 Locally Declared Labels</h3>
+<span id="index-local-labels"></span>
+<span id="index-macros_002c-local-labels"></span>
+<span id="index-_005f_005flabel_005f_005f"></span>
+
+<p>In GNU C you can declare <em>local labels</em> in any nested block
+scope.  A local label is used in a <code>goto</code> statement just like an
+ordinary label, but you can only reference it within the block in
+which it was declared.
+</p>
+<p>A local label declaration looks like this:
+</p>
+<div class="example">
+<pre class="example">__label__ <var>label</var>;
+</pre></div>
+
+<p>or
+</p>
+<div class="example">
+<pre class="example">__label__ <var>label1</var>, <var>label2</var>, <span class="roman">&hellip;</span>;
+</pre></div>
+
+<p>Local label declarations must come at the beginning of the block,
+before any ordinary declarations or statements.
+</p>
+<p>The label declaration declares the label <em>name</em>, but does not define
+the label itself.  That&rsquo;s done in the usual way, with
+<code><var>label</var>:</code>, before one of the statements in the block.
+</p>
+<p>The local label feature is useful for complex macros.  If a macro
+contains nested loops, a <code>goto</code> can be useful for breaking out of
+them.  However, an ordinary label whose scope is the whole function
+cannot be used: if the macro can be expanded several times in one
+function, the label will be multiply defined in that function.  A
+local label avoids this problem.  For example:
+</p>
+<div class="example">
+<pre class="example">#define SEARCH(value, array, target)              \
+do {                                              \
+  __label__ found;                                \
+  __auto_type _SEARCH_target = (target);          \
+  __auto_type _SEARCH_array = (array);            \
+  int i, j;                                       \
+  int value;                                      \
+  for (i = 0; i &lt; max; i++)                       \
+    for (j = 0; j &lt; max; j++)                     \
+      if (_SEARCH_array[i][j] == _SEARCH_target)  \
+        { (value) = i; goto found; }              \
+  (value) = -1;                                   \
+ found:;                                          \
+} while (0)
+</pre></div>
+
+<p>This could also be written using a statement expression
+(see <a href="Statement-Exprs.html">Statement Exprs</a>):
+</p>
+<div class="example">
+<pre class="example">#define SEARCH(array, target)                     \
+({                                                \
+  __label__ found;                                \
+  __auto_type _SEARCH_target = (target);      \
+  __auto_type _SEARCH_array = (array);     \
+  int i, j;                                       \
+  int value;                                      \
+  for (i = 0; i &lt; max; i++)                       \
+    for (j = 0; j &lt; max; j++)                     \
+      if (_SEARCH_array[i][j] == _SEARCH_target)  \
+        { value = i; goto found; }                \
+  value = -1;                                     \
+ found:                                           \
+  value;                                          \
+})
+</pre></div>
+
+<p>Ordinary labels are visible throughout the function where they are
+defined, and only in that function.  However, explicitly declared
+local labels of a block are visible in nested functions declared
+within that block.  See <a href="Nested-Functions.html">Nested Functions</a>, for details.
+</p>
+<p>See <a href="goto-Statement.html">goto Statement</a>.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Labels-as-Values.html" accesskey="n" rel="next">Labels as Values</a>, Previous: <a href="goto-Statement.html" accesskey="p" rel="prev">goto Statement</a>, Up: <a href="Statements.html" accesskey="u" rel="up">Statements</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Local-Variables.html
===================================================================
--- public/doc/gnu-c/Local-Variables.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Local-Variables.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,123 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Local Variables (GNU C Language Manual)</title>
+
+<meta name="description" content="Local Variables (GNU C Language Manual)">
+<meta name="keywords" content="Local Variables (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Variables.html" rel="up" title="Variables">
+<link href="File_002dScope-Variables.html" rel="next" title="File-Scope Variables">
+<link href="Auto-Type.html" rel="prev" title="Auto Type">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Local-Variables"></span><div class="header">
+<p>
+Next: <a href="File_002dScope-Variables.html" accesskey="n" rel="next">File-Scope Variables</a>, Previous: <a href="Auto-Type.html" accesskey="p" rel="prev">Auto Type</a>, Up: <a href="Variables.html" accesskey="u" rel="up">Variables</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>
+</div>
+<hr>
+<span id="Local-Variables-1"></span><h3 class="section">20.5 Local Variables</h3>
+<span id="index-local-variables"></span>
+<span id="index-variables_002c-local"></span>
+
+<p>Declaring a variable inside a function definition (see <a href="Function-Definitions.html">Function Definitions</a>) makes the variable name <em>local</em> to the containing
+block&mdash;that is, the containing pair of braces.  More precisely, the
+variable&rsquo;s name is visible starting just after where it appears in the
+declaration, and its visibility continues until the end of the block.
+</p>
+<p>Local variables in C are generally <em>automatic</em> variables: each
+variable&rsquo;s storage exists only from the declaration to the end of the
+block.  Execution of the declaration allocates the storage, computes
+the initial value, and stores it in the variable.  The end of the
+block deallocates the storage.<a id="DOCF6" href="#FOOT6"><sup>6</sup></a>
+</p>
+<p><strong>Warning:</strong> Two declarations for the same local variable
+in the same scope are an error.
+</p>
+<p><strong>Warning:</strong> Automatic variables are stored in the run-time stack.
+The total space for the program&rsquo;s stack may be limited; therefore,
+in using very large arrays, it may be necessary to allocate
+them in some other way to stop the program from crashing.
+</p>
+<p><strong>Warning:</strong> If the declaration of an automatic variable does not
+specify an initial value, the variable starts out containing garbage.
+In this example, the value printed could be anything at all:
+</p>
+<div class="example">
+<pre class="example">{
+  int i;
+
+  printf (&quot;Print junk %d\n&quot;, i);
+}
+</pre></div>
+
+<p>In a simple test program, that statement is likely to print 0, simply
+because every process starts with memory zeroed.  But don&rsquo;t rely on it
+to be zero&mdash;that is erroneous.
+</p>
+<p><strong>Note:</strong> Make sure to store a value into each local variable (by
+assignment, or by initialization) before referring to its value.
+</p>
+<div class="footnote">
+<hr>
+<h4 class="footnotes-heading">Footnotes</h4>
+
+<h5><a id="FOOT6" href="#DOCF6">(6)</a></h3>
+<p>Due to compiler optimizations,
+allocation and deallocation don&rsquo;t necessarily really happen at
+those times.</p>
+</div>
+<hr>
+<div class="header">
+<p>
+Next: <a href="File_002dScope-Variables.html" accesskey="n" rel="next">File-Scope Variables</a>, Previous: <a href="Auto-Type.html" accesskey="p" rel="prev">Auto Type</a>, Up: <a href="Variables.html" accesskey="u" rel="up">Variables</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Logical-Operators.html
===================================================================
--- public/doc/gnu-c/Logical-Operators.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Logical-Operators.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,128 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Logical Operators (GNU C Language Manual)</title>
+
+<meta name="description" content="Logical Operators (GNU C Language Manual)">
+<meta name="keywords" content="Logical Operators (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Execution-Control-Expressions.html" rel="up" title="Execution Control Expressions">
+<link href="Logicals-and-Comparison.html" rel="next" title="Logicals and Comparison">
+<link href="Execution-Control-Expressions.html" rel="prev" title="Execution Control Expressions">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Logical-Operators"></span><div class="header">
+<p>
+Next: <a href="Logicals-and-Comparison.html" accesskey="n" rel="next">Logicals and Comparison</a>, Up: <a href="Execution-Control-Expressions.html" accesskey="u" rel="up">Execution Control Expressions</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>
+</div>
+<hr>
+<span id="Logical-Operators-1"></span><h3 class="section">8.1 Logical Operators</h3>
+<span id="index-logical-operators"></span>
+<span id="index-operators_002c-logical"></span>
+<span id="index-conjunction-operator"></span>
+<span id="index-disjunction-operator"></span>
+<span id="index-negation-operator_002c-logical"></span>
+
+<p>The <em>logical operators</em> combine truth values, which are normally
+represented in C as numbers.  Any expression with a numeric value is a
+valid truth value: zero means false, and any other value means true.
+A pointer type is also meaningful as a truth value; a null pointer
+(which is zero) means false, and a non-null pointer means true
+(see <a href="Pointer-Types.html">Pointer Types</a>).  The value of a logical operator is always 1
+or 0 and has type <code>int</code> (see <a href="Integer-Types.html">Integer Types</a>).
+</p>
+<p>The logical operators are used mainly in the condition of an <code>if</code>
+statement, or in the end test in a <code>for</code> statement or
+<code>while</code> statement (see <a href="Statements.html">Statements</a>).  However, they are valid
+in any context where an integer-valued expression is allowed.
+</p>
+<dl compact="compact">
+<dt>&lsquo;<samp>! <var>exp</var></samp>&rsquo;</dt>
+<dd><p>Unary operator for logical &ldquo;not.&rdquo;  The value is 1 (true) if
+<var>exp</var> is 0 (false), and 0 (false) if <var>exp</var> is nonzero (true).
+</p>
+<p><strong>Warning:</strong> if <code>exp</code> is anything but an lvalue or a
+function call, you should write parentheses around it.
+</p>
+</dd>
+<dt>&lsquo;<samp><var>left</var> &amp;&amp; <var>right</var></samp>&rsquo;</dt>
+<dd><p>The logical &ldquo;and&rdquo; binary operator computes <var>left</var> and, if necessary,
+<var>right</var>.  If both of the operands are true, the &lsquo;<samp>&amp;&amp;</samp>&rsquo; expression
+gives the value 1 (which is true).  Otherwise, the &lsquo;<samp>&amp;&amp;</samp>&rsquo; expression
+gives the value 0 (false).  If <var>left</var> yields a false value,
+that determines the overall result, so <var>right</var> is not computed.
+</p>
+</dd>
+<dt>&lsquo;<samp><var>left</var> || <var>right</var></samp>&rsquo;</dt>
+<dd><p>The logical &ldquo;or&rdquo; binary operator computes <var>left</var> and, if necessary,
+<var>right</var>.  If at least one of the operands is true, the &lsquo;<samp>||</samp>&rsquo; expression
+gives the value 1 (which is true).  Otherwise, the &lsquo;<samp>||</samp>&rsquo; expression
+gives the value 0 (false).  If <var>left</var> yields a true value,
+that determines the overall result, so <var>right</var> is not computed.
+</p></dd>
+</dl>
+
+<p><strong>Warning:</strong> never rely on the relative precedence of &lsquo;<samp>&amp;&amp;</samp>&rsquo;
+and &lsquo;<samp>||</samp>&rsquo;.  When you use them together, always use parentheses to
+specify explicitly how they nest, as shown here:
+</p>
+<div class="example">
+<pre class="example">if ((r != 0 &amp;&amp; x % r == 0)
+    ||
+    (s != 0 &amp;&amp; x % s == 0))
+</pre></div>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Logicals-and-Comparison.html" accesskey="n" rel="next">Logicals and Comparison</a>, Up: <a href="Execution-Control-Expressions.html" accesskey="u" rel="up">Execution Control Expressions</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Logicals-and-Assignments.html
===================================================================
--- public/doc/gnu-c/Logicals-and-Assignments.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Logicals-and-Assignments.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,104 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Logicals and Assignments (GNU C Language Manual)</title>
+
+<meta name="description" content="Logicals and Assignments (GNU C Language Manual)">
+<meta name="keywords" content="Logicals and Assignments (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Execution-Control-Expressions.html" rel="up" title="Execution Control Expressions">
+<link href="Conditional-Expression.html" rel="next" title="Conditional Expression">
+<link href="Logicals-and-Comparison.html" rel="prev" title="Logicals and Comparison">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Logicals-and-Assignments"></span><div class="header">
+<p>
+Next: <a href="Conditional-Expression.html" accesskey="n" rel="next">Conditional Expression</a>, Previous: <a href="Logicals-and-Comparison.html" accesskey="p" rel="prev">Logicals and Comparison</a>, Up: <a href="Execution-Control-Expressions.html" accesskey="u" rel="up">Execution Control Expressions</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>
+</div>
+<hr>
+<span id="Logical-Operators-and-Assignments"></span><h3 class="section">8.3 Logical Operators and Assignments</h3>
+
+<p>There are cases where assignments nested inside the condition can
+actually make a program <em>easier</em> to read.  Here is an example
+using a hypothetical type <code>list</code> which represents a list; it
+tests whether the list has at least two links, using hypothetical
+functions, <code>nonempty</code> which is true of the argument is a nonempty
+list, and <code>list_next</code> which advances from one list link to the
+next.  We assume that a list is never a null pointer, so that the
+assignment expressions are always &ldquo;true.&rdquo;
+</p>
+<div class="example">
+<pre class="example">if (nonempty (list)
+    &amp;&amp; (temp1 = list_next (list))
+    &amp;&amp; nonempty (temp1)
+    &amp;&amp; (temp2 = list_next (temp1)))
+  <span class="roman">&hellip;</span>  /* <span class="roman">use <code>temp1</code> and <code>temp2</code></span> */
+</pre></div>
+
+<p>Here we get the benefit of the &lsquo;<samp>&amp;&amp;</samp>&rsquo; operator, to avoid executing
+the rest of the code if a call to <code>nonempty</code> says &ldquo;false.&rdquo;  The
+only natural place to put the assignments is among those calls.
+</p>
+<p>It would be possible to rewrite this as several statements, but that
+could make it much more cumbersome.  On the other hand, when the test
+is even more complex than this one, splitting it into multiple
+statements might be necessary for clarity.
+</p>
+<p>If an empty list is a null pointer, we can dispense with calling
+<code>nonempty</code>:
+</p>
+<div class="example">
+<pre class="example">if ((temp1 = list_next (list))
+    &amp;&amp; (temp2 = list_next (temp1)))
+ <span class="roman">&hellip;</span>
+</pre></div>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Logicals-and-Comparison.html
===================================================================
--- public/doc/gnu-c/Logicals-and-Comparison.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Logicals-and-Comparison.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,104 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Logicals and Comparison (GNU C Language Manual)</title>
+
+<meta name="description" content="Logicals and Comparison (GNU C Language Manual)">
+<meta name="keywords" content="Logicals and Comparison (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Execution-Control-Expressions.html" rel="up" title="Execution Control Expressions">
+<link href="Logicals-and-Assignments.html" rel="next" title="Logicals and Assignments">
+<link href="Logical-Operators.html" rel="prev" title="Logical Operators">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Logicals-and-Comparison"></span><div class="header">
+<p>
+Next: <a href="Logicals-and-Assignments.html" accesskey="n" rel="next">Logicals and Assignments</a>, Previous: <a href="Logical-Operators.html" accesskey="p" rel="prev">Logical Operators</a>, Up: <a href="Execution-Control-Expressions.html" accesskey="u" rel="up">Execution Control Expressions</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>
+</div>
+<hr>
+<span id="Logical-Operators-and-Comparisons"></span><h3 class="section">8.2 Logical Operators and Comparisons</h3>
+
+<p>The most common thing to use inside the logical operators is a
+comparison.  Conveniently, &lsquo;<samp>&amp;&amp;</samp>&rsquo; and &lsquo;<samp>||</samp>&rsquo; have lower
+precedence than comparison operators and arithmetic operators, so we
+can write expressions like this without parentheses and get the
+nesting that is natural: two comparison operations that must both be
+true.
+</p>
+<div class="example">
+<pre class="example">if (r != 0 &amp;&amp; x % r == 0)
+</pre></div>
+
+<p>This example also shows how it is useful that &lsquo;<samp>&amp;&amp;</samp>&rsquo; guarantees to
+skip the right operand if the left one turns out false.  Because of
+that, this code never tries to divide by zero.
+</p>
+<p>This is equivalent:
+</p>
+<div class="example">
+<pre class="example">if (r &amp;&amp; x % r == 0)
+</pre></div>
+
+<p>A truth value is simply a number, so <code>r</code>
+as a truth value tests whether it is nonzero.
+But <code>r</code>&rsquo;s meaning is not a truth value&mdash;it is a number to divide by.
+So it is better style to write the explicit <code>!= 0</code>.
+</p>
+<p>Here&rsquo;s another equivalent way to write it:
+</p>
+<div class="example">
+<pre class="example">if (!(r == 0) &amp;&amp; x % r == 0)
+</pre></div>
+
+<p>This illustrates the unary &lsquo;<samp>!</samp>&rsquo; operator, and the need to
+write parentheses around its operand.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Loop-Statements.html
===================================================================
--- public/doc/gnu-c/Loop-Statements.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Loop-Statements.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,101 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Loop Statements (GNU C Language Manual)</title>
+
+<meta name="description" content="Loop Statements (GNU C Language Manual)">
+<meta name="keywords" content="Loop Statements (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Statements.html" rel="up" title="Statements">
+<link href="while-Statement.html" rel="next" title="while Statement">
+<link href="return-Statement.html" rel="prev" title="return Statement">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Loop-Statements"></span><div class="header">
+<p>
+Next: <a href="switch-Statement.html" accesskey="n" rel="next">switch Statement</a>, Previous: <a href="return-Statement.html" accesskey="p" rel="prev">return Statement</a>, Up: <a href="Statements.html" accesskey="u" rel="up">Statements</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>
+</div>
+<hr>
+<span id="Loop-Statements-1"></span><h3 class="section">19.6 Loop Statements</h3>
+<span id="index-loop-statements"></span>
+<span id="index-statements_002c-loop"></span>
+<span id="index-iteration"></span>
+
+<p>You can use a loop statement when you need to execute a series of
+statements repeatedly, making an <em>iteration</em>.  C provides several
+different kinds of loop statements, described in the following
+subsections.
+</p>
+<p>Every kind of loop statement is a complex statement because contains a
+component, here called <var>body</var>, which is a nested statement.
+Most often the body is a block.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="while-Statement.html" accesskey="1">while Statement</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Loop as long as a test expression is true.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="do_002dwhile-Statement.html" accesskey="2">do-while Statement</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Execute a loop once, with further looping
+                                as long as a test expression is true.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="break-Statement.html" accesskey="3">break Statement</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">End a loop immediately.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="for-Statement.html" accesskey="4">for Statement</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Iterative looping.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Example-of-for.html" accesskey="5">Example of for</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">An example of iterative looping.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Omitted-for_002dExpressions.html" accesskey="6">Omitted for-Expressions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">for-loop expression options.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="for_002dIndex-Declarations.html" accesskey="7">for-Index Declarations</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">for-loop declaration options.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="continue-Statement.html" accesskey="8">continue Statement</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Begin the next cycle of a loop.
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Lvalues.html
===================================================================
--- public/doc/gnu-c/Lvalues.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Lvalues.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,107 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Lvalues (GNU C Language Manual)</title>
+
+<meta name="description" content="Lvalues (GNU C Language Manual)">
+<meta name="keywords" content="Lvalues (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Assignment-Expressions.html" rel="up" title="Assignment Expressions">
+<link href="Modifying-Assignment.html" rel="next" title="Modifying Assignment">
+<link href="Simple-Assignment.html" rel="prev" title="Simple Assignment">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Lvalues"></span><div class="header">
+<p>
+Next: <a href="Modifying-Assignment.html" accesskey="n" rel="next">Modifying Assignment</a>, Previous: <a href="Simple-Assignment.html" accesskey="p" rel="prev">Simple Assignment</a>, Up: <a href="Assignment-Expressions.html" accesskey="u" rel="up">Assignment Expressions</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>
+</div>
+<hr>
+<span id="Lvalues-1"></span><h3 class="section">7.2 Lvalues</h3>
+<span id="index-lvalues"></span>
+
+<p>An expression that identifies a memory space that holds a value is
+called an <em>lvalue</em>, because it is a location that can hold a value.
+</p>
+<p>The standard kinds of lvalues are:
+</p>
+<ul>
+<li> A variable.
+
+</li><li> A pointer-dereference expression (see <a href="Pointer-Dereference.html">Pointer Dereference</a>) using
+unary &lsquo;<samp>*</samp>&rsquo;.
+
+</li><li> A structure field reference (see <a href="Structures.html">Structures</a>) using &lsquo;<samp>.</samp>&rsquo;, if
+the structure value is an lvalue.
+
+</li><li> A structure field reference using &lsquo;<samp>-&gt;</samp>&rsquo;.  This is always an lvalue
+since &lsquo;<samp>-&gt;</samp>&rsquo; implies pointer dereference.
+
+</li><li> A union alternative reference (see <a href="Unions.html">Unions</a>), on the same conditions
+as for structure fields.
+
+</li><li> An array-element reference using &lsquo;<samp>[<span class="roman">&hellip;</span>]</samp>&rsquo;, if the array
+is an lvalue.
+</li></ul>
+
+<p>If an expression&rsquo;s outermost operation is any other operator, that
+expression is not an lvalue.  Thus, the variable <code>x</code> is an
+lvalue, but <code>x + 0</code> is not, even though these two expressions
+compute the same value (assuming <code>x</code> is a number).
+</p>
+<p>An array can be an lvalue (the rules above determine whether it is
+one), but using the array in an expression converts it automatically
+to a pointer to the first element.  The result of this conversion is
+not an lvalue.  Thus, if the variable <code>a</code> is an array, you can&rsquo;t
+use <code>a</code> by itself as the left operand of an assignment.  But you
+can assign to an element of <code>a</code>, such as <code>a[0]</code>.  That is an
+lvalue since <code>a</code> is an lvalue.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Machine-Epsilon.html
===================================================================
--- public/doc/gnu-c/Machine-Epsilon.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Machine-Epsilon.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,213 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Machine Epsilon (GNU C Language Manual)</title>
+
+<meta name="description" content="Machine Epsilon (GNU C Language Manual)">
+<meta name="keywords" content="Machine Epsilon (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Floating-Point-in-Depth.html" rel="up" title="Floating Point in Depth">
+<link href="Complex-Arithmetic.html" rel="next" title="Complex Arithmetic">
+<link href="Rounding-Control.html" rel="prev" title="Rounding Control">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Machine-Epsilon"></span><div class="header">
+<p>
+Next: <a href="Complex-Arithmetic.html" accesskey="n" rel="next">Complex Arithmetic</a>, Previous: <a href="Rounding-Control.html" accesskey="p" rel="prev">Rounding Control</a>, Up: <a href="Floating-Point-in-Depth.html" accesskey="u" rel="up">Floating Point in Depth</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>
+</div>
+<hr>
+<span id="Machine-Epsilon-1"></span><h3 class="section">28.18 Machine Epsilon</h3>
+<span id="index-machine-epsilon-_0028floating-point_0029"></span>
+<span id="index-floating_002dpoint-machine-epsilon"></span>
+
+<p>In any floating-point system, three attributes are particularly
+important to know: <em>base</em> (the number that the exponent specifies
+a power of), <em>precision</em> (number of digits in the significand),
+and <em>range</em> (difference between most positive and most negative
+values).  The allocation of bits between exponent and significand
+decides the answers to those questions.
+</p>
+<p>A measure of the precision is the answer to the question: what is
+the smallest number that can be added to <code>1.0</code> such that the
+sum differs from <code>1.0</code>?  That number is called the
+<em>machine epsilon</em>.
+</p>
+<p>We could define the needed machine-epsilon constants for <code>float</code>,
+<code>double</code>, and <code>long double</code> like this:
+</p>
+<div class="example">
+<pre class="example">static const float  epsf = 0x1p-23;  /* <span class="roman">about 1.192e-07</span> */
+static const double eps  = 0x1p-52;  /* <span class="roman">about 2.220e-16</span> */
+static const long double epsl = 0x1p-63;  /* <span class="roman">about 1.084e-19</span> */
+</pre></div>
+
+<p>Instead of the hexadecimal constants, we could also have used the
+Standard C macros, <code>FLT_EPSILON</code>, <code>DBL_EPSILON</code>, and
+<code>LDBL_EPSILON</code>.
+</p>
+<p>It is useful to be able to compute the machine epsilons at
+run time, and we can easily generalize the operation by replacing
+the constant <code>1.0</code> with a user-supplied value:
+</p>
+<div class="example">
+<pre class="example">double
+macheps (double x)
+{ /* <span class="roman">Return machine epsilon for <var>x</var>,</span>  */
+      <span class="roman">such that <var>x</var> + macheps (<var>x</var>) &gt; <var>x</var>.</span>  */
+  static const double base = 2.0;
+  double eps;
+
+  if (isnan (x))
+      eps = x;
+  else
+    {
+      eps = (x == 0.0) ? 1.0 : x;
+
+      while ((x + eps / base) != x)
+          eps /= base;          /* <span class="roman">Always exact!</span>  */
+    }
+
+  return (eps);
+}
+</pre></div>
+
+<p>If we call that function with arguments from <code>0</code> to
+<code>10</code>, as well as Infinity and NaN, and print the returned
+values in hexadecimal, we get output like this:
+</p>
+<div class="example">
+<pre class="example">macheps (  0) = 0x1.0000000000000p-1074
+macheps (  1) = 0x1.0000000000000p-52
+macheps (  2) = 0x1.0000000000000p-51
+macheps (  3) = 0x1.8000000000000p-52
+macheps (  4) = 0x1.0000000000000p-50
+macheps (  5) = 0x1.4000000000000p-51
+macheps (  6) = 0x1.8000000000000p-51
+macheps (  7) = 0x1.c000000000000p-51
+macheps (  8) = 0x1.0000000000000p-49
+macheps (  9) = 0x1.2000000000000p-50
+macheps ( 10) = 0x1.4000000000000p-50
+macheps (Inf) = infinity
+macheps (NaN) = nan
+</pre></div>
+
+<p>Notice that <code>macheps</code> has a special test for a NaN to prevent an
+infinite loop.
+</p>
+
+<p>Our code made another test for a zero argument to avoid getting a
+zero return.  The returned value in that case is the smallest
+representable floating-point number, here the subnormal value
+<code>2**(-1074)</code>, which is about <code>4.941e-324</code>.
+</p>
+<p>No special test is needed for an Infinity, because the
+<code>eps</code>-reduction loop then terminates at the first iteration.
+</p>
+<p>Our <code>macheps</code> function here assumes binary floating point; some
+architectures may differ.
+</p>
+<p>The C library includes some related functions that can also be used to
+determine machine epsilons at run time:
+</p>
+<div class="example">
+<pre class="example">#include &lt;math.h&gt;           /* <span class="roman">Include for these prototypes.</span> */
+
+double      nextafter  (double x, double y);
+float       nextafterf (float x, float y);
+long double nextafterl (long double x, long double y);
+</pre></div>
+
+<p>These return the machine number nearest <var>x</var> in the direction of
+<var>y</var>.  For example, <code>nextafter (1.0, 2.0)</code> produces the same
+result as <code>1.0 + macheps (1.0)</code> and <code>1.0 + DBL_EPSILON</code>.
+See <a href="https://www.gnu.org/software/libc/manual/html_node/FP-Bit-Twiddling.html#FP-Bit-Twiddling">FP Bit Twiddling</a> in <cite>The GNU C Library Reference Manual</cite>.
+</p>
+<p>It is important to know that the machine epsilon is not symmetric
+about all numbers.  At the boundaries where normalization changes the
+exponent, the epsilon below <var>x</var> is smaller than that just above
+<var>x</var> by a factor <code>1 / base</code>.  For example, <code>macheps
+(1.0)</code> returns <code>+0x1p-52</code>, whereas <code>macheps (-1.0)</code> returns
+<code>+0x1p-53</code>.  Some authors distinguish those cases by calling them
+the <em>positive</em> and <em>negative</em>, or <em>big</em> and
+<em>small</em>, machine epsilons.  You can produce their values like
+this:
+</p>
+<div class="example">
+<pre class="example">eps_neg = 1.0 - nextafter (1.0, -1.0);
+eps_pos = nextafter (1.0, +2.0) - 1.0;
+</pre></div>
+
+<p>If <var>x</var> is a variable, such that you do not know its value at
+compile time, then you can substitute literal <var>y</var> values with
+either <code>-inf()</code> or <code>+inf()</code>, like this:
+</p>
+<div class="example">
+<pre class="example">eps_neg = x - nextafter (x, -inf ());
+eps_pos = nextafter (x, +inf() - x);
+</pre></div>
+
+<p>In such cases, if <var>x</var> is Infinity, then <em>the <code>nextafter</code>
+functions return <var>y</var> if <var>x</var> equals <var>y</var></em>.  Our two
+assignments then produce <code>+0x1.fffffffffffffp+1023</code> (about
+1.798e+308) for <var>eps_neg</var> and Infinity for <var>eps_pos</var>.  Thus,
+the call <code>nextafter (INFINITY, -INFINITY)</code> can be used to find
+the largest representable finite number, and with the call
+<code>nextafter (0.0, 1.0)</code>, the smallest representable number (here,
+<code>0x1p-1074</code> (about 4.491e-324), a number that we saw before as
+the output from <code>macheps (0.0)</code>).
+</p>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Complex-Arithmetic.html" accesskey="n" rel="next">Complex Arithmetic</a>, Previous: <a href="Rounding-Control.html" accesskey="p" rel="prev">Rounding Control</a>, Up: <a href="Floating-Point-in-Depth.html" accesskey="u" rel="up">Floating Point in Depth</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Macro-Arguments.html
===================================================================
--- public/doc/gnu-c/Macro-Arguments.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Macro-Arguments.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,187 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Macro Arguments (GNU C Language Manual)</title>
+
+<meta name="description" content="Macro Arguments (GNU C Language Manual)">
+<meta name="keywords" content="Macro Arguments (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Macros.html" rel="up" title="Macros">
+<link href="Stringification.html" rel="next" title="Stringification">
+<link href="Function_002dlike-Macros.html" rel="prev" title="Function-like Macros">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Macro-Arguments"></span><div class="header">
+<p>
+Next: <a href="Stringification.html" accesskey="n" rel="next">Stringification</a>, Previous: <a href="Function_002dlike-Macros.html" accesskey="p" rel="prev">Function-like Macros</a>, Up: <a href="Macros.html" accesskey="u" rel="up">Macros</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>
+</div>
+<hr>
+<span id="Macro-Arguments-1"></span><h4 class="subsection">26.5.3 Macro Arguments</h4>
+<span id="index-arguments"></span>
+<span id="index-macros-with-arguments"></span>
+<span id="index-arguments-in-macro-definitions"></span>
+
+<p>Function-like macros can take <em>arguments</em>, just like true functions.
+To define a macro that uses arguments, you insert <em>parameters</em>
+between the pair of parentheses in the macro definition that make the
+macro function-like.  The parameters must be valid C identifiers,
+separated by commas and optionally whitespace.
+</p>
+<p>To invoke a macro that takes arguments, you write the name of the macro
+followed by a list of <em>actual arguments</em> in parentheses, separated
+by commas.  The invocation of the macro need not be restricted to a
+single logical line&mdash;it can cross as many lines in the source file as
+you wish.  The number of arguments you give must match the number of
+parameters in the macro definition.  When the macro is expanded, each
+use of a parameter in its body is replaced by the tokens of the
+corresponding argument.  (The macro body is not required to use all of the
+parameters.)
+</p>
+<p>As an example, here is a macro that computes the minimum of two numeric
+values, as it is defined in many C programs, and some uses.
+</p>
+<div class="example">
+<pre class="example">#define min(X, Y)  ((X) &lt; (Y) ? (X) : (Y))
+  x = min(a, b);      &rarr; x = ((a) &lt; (b) ? (a) : (b));
+  y = min(1, 2);      &rarr; y = ((1) &lt; (2) ? (1) : (2));
+  z = min(a+28, *p);  &rarr; z = ((a+28) &lt; (*p) ? (a+28) : (*p));
+</pre></div>
+
+<p>In this small example you can already see several of the dangers of
+macro arguments.  See <a href="Macro-Pitfalls.html">Macro Pitfalls</a>, for detailed explanations.
+</p>
+<p>Leading and trailing whitespace in each argument is dropped, and all
+whitespace between the tokens of an argument is reduced to a single
+space.  Parentheses within each argument must balance; a comma within
+such parentheses does not end the argument.  However, there is no
+requirement for square brackets or braces to balance, and they do not
+prevent a comma from separating arguments.  Thus,
+</p>
+<div class="example">
+<pre class="example">macro (array[x = y, x + 1])
+</pre></div>
+
+<p>passes two arguments to <code>macro</code>: <code>array[x = y</code> and <code>x +
+1]</code>.  If you want to supply <code>array[x = y, x + 1]</code> as an argument,
+you can write it as <code>array[(x = y, x + 1)]</code>, which is equivalent C
+code.  However, putting an assignment inside an array subscript
+is to be avoided anyway.
+</p>
+<p>All arguments to a macro are completely macro-expanded before they are
+substituted into the macro body.  After substitution, the complete text
+is scanned again for macros to expand, including the arguments.  This rule
+may seem strange, but it is carefully designed so you need not worry
+about whether any function call is actually a macro invocation.  You can
+run into trouble if you try to be too clever, though.  See <a href="Argument-Prescan.html">Argument Prescan</a>, for detailed discussion.
+</p>
+<p>For example, <code>min (min (a, b), c)</code> is first expanded to
+</p>
+<div class="example">
+<pre class="example">  min (((a) &lt; (b) ? (a) : (b)), (c))
+</pre></div>
+
+<p>and then to
+</p>
+<div class="example">
+<pre class="example">((((a) &lt; (b) ? (a) : (b))) &lt; (c)
+ ? (((a) &lt; (b) ? (a) : (b)))
+ : (c))
+</pre></div>
+
+<p>(The line breaks shown here for clarity are not actually generated.)
+</p>
+<span id="index-empty-macro-arguments"></span>
+<p>You can leave macro arguments empty without error, but many macros
+will then expand to invalid code.  You cannot leave out arguments
+entirely; if a macro takes two arguments, there must be exactly one
+comma at the top level of its argument list.  Here are some silly
+examples using <code>min</code>:
+</p>
+<div class="example">
+<pre class="example">min(, b)        &rarr; ((   ) &lt; (b) ? (   ) : (b))
+min(a, )        &rarr; ((a  ) &lt; ( ) ? (a  ) : ( ))
+min(,)          &rarr; ((   ) &lt; ( ) ? (   ) : ( ))
+min((,),)       &rarr; (((,)) &lt; ( ) ? ((,)) : ( ))
+
+min()      error&rarr; macro &quot;min&quot; requires 2 arguments, but only 1 given
+min(,,)    error&rarr; macro &quot;min&quot; passed 3 arguments, but takes just 2
+</pre></div>
+
+<p>Whitespace is not a preprocessing token, so if a macro <code>foo</code> takes
+one argument, <code>foo&nbsp;()<!-- /@w --></code> and <code>foo&nbsp;(&nbsp;)<!-- /@w --></code> both supply it an
+empty argument.
+</p>
+
+<p>Macro parameters appearing inside string literals are not replaced by
+their corresponding actual arguments.
+</p>
+<div class="example">
+<pre class="example">#define foo(x) x, &quot;x&quot;
+foo(bar)        &rarr; bar, &quot;x&quot;
+</pre></div>
+
+<p>See the next subsection for how to insert macro arguments
+into a string literal.
+</p>
+<p>The token following the macro call and the last token of the macro
+expansion do not become one token even if it looks like they could:
+</p>
+<div class="example">
+<pre class="example">#define foo()  abc
+foo()def        &rarr; abc def
+</pre></div>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Stringification.html" accesskey="n" rel="next">Stringification</a>, Previous: <a href="Function_002dlike-Macros.html" accesskey="p" rel="prev">Function-like Macros</a>, Up: <a href="Macros.html" accesskey="u" rel="up">Macros</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Macro-Pitfalls.html
===================================================================
--- public/doc/gnu-c/Macro-Pitfalls.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Macro-Pitfalls.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,92 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Macro Pitfalls (GNU C Language Manual)</title>
+
+<meta name="description" content="Macro Pitfalls (GNU C Language Manual)">
+<meta name="keywords" content="Macro Pitfalls (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Macros.html" rel="up" title="Macros">
+<link href="Misnesting.html" rel="next" title="Misnesting">
+<link href="Directives-Within-Macro-Arguments.html" rel="prev" title="Directives Within Macro Arguments">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Macro-Pitfalls"></span><div class="header">
+<p>
+Previous: <a href="Directives-Within-Macro-Arguments.html" accesskey="p" rel="prev">Directives Within Macro Arguments</a>, Up: <a href="Macros.html" accesskey="u" rel="up">Macros</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>
+</div>
+<hr>
+<span id="Macro-Pitfalls-1"></span><h4 class="subsection">26.5.10 Macro Pitfalls</h4>
+<span id="index-problems-with-macros"></span>
+<span id="index-pitfalls-of-macros"></span>
+
+<p>In this section we describe some special rules that apply to macros and
+macro expansion, and point out certain cases in which the rules have
+counter-intuitive consequences that you must watch out for.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Misnesting.html" accesskey="1">Misnesting</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Operator-Precedence-Problems.html" accesskey="2">Operator Precedence Problems</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Swallowing-the-Semicolon.html" accesskey="3">Swallowing the Semicolon</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Duplication-of-Side-Effects.html" accesskey="4">Duplication of Side Effects</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Macros-and-Auto-Type.html" accesskey="5">Macros and Auto Type</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Self_002dReferential-Macros.html" accesskey="6">Self-Referential Macros</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Argument-Prescan.html" accesskey="7">Argument Prescan</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Macros-and-Auto-Type.html
===================================================================
--- public/doc/gnu-c/Macros-and-Auto-Type.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Macros-and-Auto-Type.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,103 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Macros and Auto Type (GNU C Language Manual)</title>
+
+<meta name="description" content="Macros and Auto Type (GNU C Language Manual)">
+<meta name="keywords" content="Macros and Auto Type (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Macro-Pitfalls.html" rel="up" title="Macro Pitfalls">
+<link href="Self_002dReferential-Macros.html" rel="next" title="Self-Referential Macros">
+<link href="Duplication-of-Side-Effects.html" rel="prev" title="Duplication of Side Effects">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Macros-and-Auto-Type"></span><div class="header">
+<p>
+Next: <a href="Self_002dReferential-Macros.html" accesskey="n" rel="next">Self-Referential Macros</a>, Previous: <a href="Duplication-of-Side-Effects.html" accesskey="p" rel="prev">Duplication of Side Effects</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>
+</div>
+<hr>
+<span id="Using-_005f_005fauto_005ftype-for-Local-Variables"></span><h4 class="subsubsection">26.5.10.5 Using <code>__auto_type</code> for Local Variables</h4>
+<span id="index-local-variables-in-macros"></span>
+<span id="index-variables_002c-local_002c-in-macros"></span>
+<span id="index-macros_002c-local-variables-in"></span>
+
+<p>The operator <code>__auto_type</code> makes it possible to
+define macros that can work on any data type even though they need to
+generate local variable declarations.  See <a href="Auto-Type.html">Auto Type</a>.
+</p>
+<p>For instance, here&rsquo;s how to define a safe &ldquo;maximum&rdquo; macro that
+operates on any arithmetic type and computes each of its arguments
+exactly once:
+</p>
+<div class="example">
+<pre class="example">#define max(a,b) \
+  ({ __auto_type _a = (a); \
+      __auto_type _b = (b); \
+    _a &gt; _b ? _a : _b; })
+</pre></div>
+
+<p>The &lsquo;<samp>({ &hellip; })</samp>&rsquo; notation produces <em>statement
+expression</em>&mdash;a statement that can be used as an expression
+(see <a href="Statement-Exprs.html">Statement Exprs</a>).  Its value is the value of its last
+statement.  This permits us to define local variables and store each
+argument value into one.
+</p>
+<span id="index-underscores-in-variables-in-macros"></span>
+<span id="index-_005f-in-variables-in-macros"></span>
+
+<p>The reason for using names that start with underscores for the local
+variables is to avoid conflicts with variable names that occur within
+the expressions that are substituted for <code>a</code> and <code>b</code>.
+Underscore followed by a lower case letter won&rsquo;t be predefined by the
+system in any way.
+</p>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Macros.html
===================================================================
--- public/doc/gnu-c/Macros.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Macros.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,117 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Macros (GNU C Language Manual)</title>
+
+<meta name="description" content="Macros (GNU C Language Manual)">
+<meta name="keywords" content="Macros (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Preprocessing.html" rel="up" title="Preprocessing">
+<link href="Object_002dlike-Macros.html" rel="next" title="Object-like Macros">
+<link href="Computed-Includes.html" rel="prev" title="Computed Includes">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Macros"></span><div class="header">
+<p>
+Next: <a href="Conditionals.html" accesskey="n" rel="next">Conditionals</a>, Previous: <a href="Header-Files.html" accesskey="p" rel="prev">Header Files</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>
+</div>
+<hr>
+<span id="Macros-1"></span><h3 class="section">26.5 Macros</h3>
+<span id="index-macros"></span>
+
+<p>A <em>macro</em> is a fragment of code that has been given a name.
+Whenever the name is used, it is replaced by the contents of the macro.
+There are two kinds of macros.  They differ mostly in what they look
+like when they are used.  <em>Object-like</em> macros resemble data objects
+when used, <em>function-like</em> macros resemble function calls.
+</p>
+<p>You may define any valid identifier as a macro, even if it is a C
+keyword.  In the preprocessing stage, GCC does not know anything about
+keywords.  This can be useful if you wish to hide a keyword such as
+<code>const</code> from an older compiler that does not understand it.
+However, the preprocessing operator <code>defined</code> (see <a href="defined.html">defined</a>)
+can never be defined as a macro, and C<code>++</code>&rsquo;s named operators
+(see <a href="https://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Named-Operators.html#C_002b_002b-Named-Operators">C++ Named Operators</a> in <cite>Using the GNU Compiler Collection</cite>) cannot be macros when
+compiling C<code>++</code> code.
+</p>
+<p>The operator <code>#</code> is used in macros for stringification of an
+argument (see <a href="Stringification.html">Stringification</a>), and <code>##</code> is used for
+concatenation of arguments into larger tokens (see <a href="Concatenation.html">Concatenation</a>)
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Object_002dlike-Macros.html" accesskey="1">Object-like Macros</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Function_002dlike-Macros.html" accesskey="2">Function-like Macros</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Macro-Arguments.html" accesskey="3">Macro Arguments</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Stringification.html" accesskey="4">Stringification</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Concatenation.html" accesskey="5">Concatenation</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Variadic-Macros.html" accesskey="6">Variadic Macros</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Predefined-Macros.html" accesskey="7">Predefined Macros</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Undefining-and-Redefining-Macros.html" accesskey="8">Undefining and Redefining Macros</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Directives-Within-Macro-Arguments.html" accesskey="9">Directives Within Macro Arguments</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Macro-Pitfalls.html">Macro Pitfalls</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Conditionals.html" accesskey="n" rel="next">Conditionals</a>, Previous: <a href="Header-Files.html" accesskey="p" rel="prev">Header Files</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Maximum-and-Minimum-Values.html
===================================================================
--- public/doc/gnu-c/Maximum-and-Minimum-Values.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Maximum-and-Minimum-Values.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,113 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Maximum and Minimum Values (GNU C Language Manual)</title>
+
+<meta name="description" content="Maximum and Minimum Values (GNU C Language Manual)">
+<meta name="keywords" content="Maximum and Minimum Values (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Integers-in-Depth.html" rel="up" title="Integers in Depth">
+<link href="Floating-Point-in-Depth.html" rel="next" title="Floating Point in Depth">
+<link href="Integer-Representations.html" rel="prev" title="Integer Representations">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Maximum-and-Minimum-Values"></span><div class="header">
+<p>
+Previous: <a href="Integer-Representations.html" accesskey="p" rel="prev">Integer Representations</a>, Up: <a href="Integers-in-Depth.html" accesskey="u" rel="up">Integers in Depth</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>
+</div>
+<hr>
+<span id="Maximum-and-Minimum-Values-1"></span><h3 class="section">27.2 Maximum and Minimum Values</h3>
+<span id="index-maximum-integer-values"></span>
+<span id="index-minimum-integer-values"></span>
+<span id="index-integer-ranges"></span>
+<span id="index-ranges-of-integer-types"></span>
+<span id="index-INT_005fMAX"></span>
+<span id="index-UINT_005fMAX"></span>
+<span id="index-SHRT_005fMAX"></span>
+<span id="index-LONG_005fMAX"></span>
+<span id="index-LLONG_005fMAX"></span>
+<span id="index-USHRT_005fMAX"></span>
+<span id="index-ULONG_005fMAX"></span>
+<span id="index-ULLONG_005fMAX"></span>
+<span id="index-CHAR_005fMAX"></span>
+<span id="index-SCHAR_005fMAX"></span>
+<span id="index-UCHAR_005fMAX"></span>
+
+<p>For each primitive integer type, there is a standard macro defined in
+<samp>limits.h</samp> that gives the largest value that type can hold.  For
+instance, for type <code>int</code>, the maximum value is <code>INT_MAX</code>.
+On a 32-bit computer, that is equal to 2,147,483,647.  The
+maximum value for <code>unsigned int</code> is <code>UINT_MAX</code>, which on a
+32-bit computer is equal to 4,294,967,295.  Likewise, there are
+<code>SHRT_MAX</code>, <code>LONG_MAX</code>, and <code>LLONG_MAX</code>, and
+corresponding unsigned limits <code>USHRT_MAX</code>, <code>ULONG_MAX</code>, and
+<code>ULLONG_MAX</code>.
+</p>
+<p>Since there are three ways to specify a <code>char</code> type, there are
+also three limits: <code>CHAR_MAX</code>, <code>SCHAR_MAX</code>, and
+<code>UCHAR_MAX</code>.
+</p>
+<p>For each type that is or might be signed, there is another symbol that
+gives the minimum value it can hold.  (Just replace <code>MAX</code> with
+<code>MIN</code> in the names listed above.)  There is no minimum limit
+symbol for types specified with <code>unsigned</code> because the
+minimum for them is universally zero.
+</p>
+<p><code>INT_MIN</code> is not the negative of <code>INT_MAX</code>.  In
+two&rsquo;s-complement representation, the most negative number is 1 less
+than the negative of the most positive number.  Thus, <code>INT_MIN</code>
+on a 32-bit computer has the value -2,147,483,648.  You can&rsquo;t
+actually write the value that way in C, since it would overflow.
+That&rsquo;s a good reason to use <code>INT_MIN</code> to specify
+that value.  Its definition is written to avoid overflow.
+</p>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Misnesting.html
===================================================================
--- public/doc/gnu-c/Misnesting.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Misnesting.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,99 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Misnesting (GNU C Language Manual)</title>
+
+<meta name="description" content="Misnesting (GNU C Language Manual)">
+<meta name="keywords" content="Misnesting (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Macro-Pitfalls.html" rel="up" title="Macro Pitfalls">
+<link href="Operator-Precedence-Problems.html" rel="next" title="Operator Precedence Problems">
+<link href="Macro-Pitfalls.html" rel="prev" title="Macro Pitfalls">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Misnesting"></span><div class="header">
+<p>
+Next: <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>
+</div>
+<hr>
+<span id="Misnesting-1"></span><h4 class="subsubsection">26.5.10.1 Misnesting</h4>
+
+<p>When a macro is called with arguments, the arguments are substituted
+into the macro body and the result is checked, together with the rest of
+the input file, for more macro calls.  It is possible to piece together
+a macro call coming partially from the macro body and partially from the
+arguments.  For example,
+</p>
+<div class="example">
+<pre class="example">#define twice(x) (2*(x))
+#define call_with_1(x) x(1)
+call_with_1 (twice)
+     &rarr; twice(1)
+     &rarr; (2*(1))
+</pre></div>
+
+<p>Macro definitions do not have to have balanced parentheses.  By writing
+an unbalanced open parenthesis in a macro body, it is possible to create
+a macro call that begins inside the macro body but ends outside of it.
+For example,
+</p>
+<div class="example">
+<pre class="example">#define strange(file) fprintf (file, &quot;%s %d&quot;,
+/* <span class="roman">&hellip;</span> */
+strange(stderr) p, 35)
+     &rarr; fprintf (stderr, &quot;%s %d&quot;, p, 35)
+</pre></div>
+
+<p>The ability to piece together a macro call can be useful, but the use of
+unbalanced open parentheses in a macro body is just confusing, and
+should be avoided.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Mixed-Mode.html
===================================================================
--- public/doc/gnu-c/Mixed-Mode.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Mixed-Mode.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,91 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Mixed Mode (GNU C Language Manual)</title>
+
+<meta name="description" content="Mixed Mode (GNU C Language Manual)">
+<meta name="keywords" content="Mixed Mode (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Arithmetic.html" rel="up" title="Arithmetic">
+<link href="Division-and-Remainder.html" rel="next" title="Division and Remainder">
+<link href="Signed-Overflow.html" rel="prev" title="Signed Overflow">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Mixed-Mode"></span><div class="header">
+<p>
+Next: <a href="Division-and-Remainder.html" accesskey="n" rel="next">Division and Remainder</a>, Previous: <a href="Integer-Overflow.html" accesskey="p" rel="prev">Integer Overflow</a>, Up: <a href="Arithmetic.html" accesskey="u" rel="up">Arithmetic</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>
+</div>
+<hr>
+<span id="Mixed_002dMode-Arithmetic"></span><h3 class="section">6.4 Mixed-Mode Arithmetic</h3>
+
+<p>Mixing integers and floating-point numbers in a basic arithmetic
+operation converts the integers automatically to floating point.
+In most cases, this gives exactly the desired results.
+But sometimes it matters precisely where the conversion occurs.
+</p>
+<p>If <code>i</code> and <code>j</code> are integers, <code>(i + j) * 2.0</code> adds them
+as an integer, then converts the sum to floating point for the
+multiplication.  If the addition gets an overflow, that is not
+equivalent to converting both integers to floating point and then
+adding them.  You can get the latter result by explicitly converting
+the integers, as in <code>((double) i + (double) j) * 2.0</code>.
+See <a href="Explicit-Type-Conversion.html">Explicit Type Conversion</a>.
+</p>
+<p>Adding or multiplying several values, including some integers and some
+floating point, does the operations left to right.  Thus, <code>3.0 +
+i + j</code> converts <code>i</code> to floating point, then adds 3.0, then
+converts <code>j</code> to floating point and adds that.  You can specify a
+different order using parentheses: <code>3.0 + (i + j)</code> adds <code>i</code>
+and <code>j</code> first and then adds that result (converting to floating
+point) to 3.0.  In this respect, C differs from other languages, such
+as Fortran.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Modifying-Assignment.html
===================================================================
--- public/doc/gnu-c/Modifying-Assignment.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Modifying-Assignment.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,147 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Modifying Assignment (GNU C Language Manual)</title>
+
+<meta name="description" content="Modifying Assignment (GNU C Language Manual)">
+<meta name="keywords" content="Modifying Assignment (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Assignment-Expressions.html" rel="up" title="Assignment Expressions">
+<link href="Increment_002fDecrement.html" rel="next" title="Increment/Decrement">
+<link href="Lvalues.html" rel="prev" title="Lvalues">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Modifying-Assignment"></span><div class="header">
+<p>
+Next: <a href="Increment_002fDecrement.html" accesskey="n" rel="next">Increment/Decrement</a>, Previous: <a href="Lvalues.html" accesskey="p" rel="prev">Lvalues</a>, Up: <a href="Assignment-Expressions.html" accesskey="u" rel="up">Assignment Expressions</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>
+</div>
+<hr>
+<span id="Modifying-Assignment-1"></span><h3 class="section">7.3 Modifying Assignment</h3>
+<span id="index-modifying-assignment"></span>
+<span id="index-assignment_002c-modifying"></span>
+
+<p>You can abbreviate the common construct
+</p>
+<div class="example">
+<pre class="example"><var>lvalue</var> = <var>lvalue</var> + <var>expression</var>
+</pre></div>
+
+<p>as
+</p>
+<div class="example">
+<pre class="example"><var>lvalue</var> += <var>expression</var>
+</pre></div>
+
+<p>This is known as a <em>modifying assignment</em>.  For instance,
+</p>
+<div class="example">
+<pre class="example">i = i + 5;
+i += 5;
+</pre></div>
+
+<p>shows two statements that are equivalent.  The first uses
+simple assignment; the second uses modifying assignment.
+</p>
+<p>Modifying assignment works with any binary arithmetic operator.  For
+instance, you can subtract something from an lvalue like this,
+</p>
+<div class="example">
+<pre class="example"><var>lvalue</var> -= <var>expression</var>
+</pre></div>
+
+<p>or multiply it by a certain amount like this,
+</p>
+<div class="example">
+<pre class="example"><var>lvalue</var> *= <var>expression</var>
+</pre></div>
+
+<p>or shift it by a certain amount like this.
+</p>
+<div class="example">
+<pre class="example"><var>lvalue</var> &lt;&lt;= <var>expression</var>
+<var>lvalue</var> &gt;&gt;= <var>expression</var>
+</pre></div>
+
+<p>In most cases, this feature adds no power to the language, but it
+provides substantial convenience.  Also, when <var>lvalue</var> contains
+code that has side effects, the simple assignment performs those side
+effects twice, while the modifying assignment performs them once.  For
+instance,
+</p>
+<div class="example">
+<pre class="example">x[foo ()] = x[foo ()] + 5;
+</pre></div>
+
+<p>calls <code>foo</code> twice, and it could return different values each
+time.  If <code>foo ()</code> returns 1 the first time and 3 the second
+time, then the effect could be to add <code>x[3]</code> and 5 and store the
+result in <code>x[1]</code>, or to add <code>x[1]</code> and 5 and store the
+result in <code>x[3]</code>.  We don&rsquo;t know which of the two it will do,
+because C does not specify which call to <code>foo</code> is computed first.
+</p>
+<p>Such a statement is not well defined, and shouldn&rsquo;t be used.
+</p>
+<p>By contrast,
+</p>
+<div class="example">
+<pre class="example">x[foo ()] += 5;
+</pre></div>
+
+<p>is well defined: it calls <code>foo</code> only once to determine which
+element of <code>x</code> to adjust, and it adjusts that element by adding 5
+to it.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Increment_002fDecrement.html" accesskey="n" rel="next">Increment/Decrement</a>, Previous: <a href="Lvalues.html" accesskey="p" rel="prev">Lvalues</a>, Up: <a href="Assignment-Expressions.html" accesskey="u" rel="up">Assignment Expressions</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Multidimensional-Arrays.html
===================================================================
--- public/doc/gnu-c/Multidimensional-Arrays.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Multidimensional-Arrays.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,171 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Multidimensional Arrays (GNU C Language Manual)</title>
+
+<meta name="description" content="Multidimensional Arrays (GNU C Language Manual)">
+<meta name="keywords" content="Multidimensional Arrays (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Arrays.html" rel="up" title="Arrays">
+<link href="Constructing-Array-Values.html" rel="next" title="Constructing Array Values">
+<link href="Limitations-of-C-Arrays.html" rel="prev" title="Limitations of C Arrays">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Multidimensional-Arrays"></span><div class="header">
+<p>
+Next: <a href="Constructing-Array-Values.html" accesskey="n" rel="next">Constructing Array Values</a>, Previous: <a href="Limitations-of-C-Arrays.html" accesskey="p" rel="prev">Limitations of C Arrays</a>, Up: <a href="Arrays.html" accesskey="u" rel="up">Arrays</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>
+</div>
+<hr>
+<span id="Multidimensional-Arrays-1"></span><h3 class="section">16.7 Multidimensional Arrays</h3>
+<span id="index-multidimensional-arrays"></span>
+<span id="index-array_002c-multidimensional"></span>
+
+<p>Strictly speaking, all arrays in C are unidimensional.  However, you
+can create an array of arrays, which is more or less equivalent to a
+multidimensional array.  For example,
+</p>
+<div class="example">
+<pre class="example">struct chesspiece *board[8][8];
+</pre></div>
+
+<p>declares an array of 8 arrays of 8 pointers to <code>struct
+chesspiece</code>.  This data type could represent the state of a chess
+game.  To access one square&rsquo;s contents requires two array index
+operations, one for each dimension.  For instance, you can write
+<code>board[row][column]</code>, assuming <code>row</code> and <code>column</code>
+are variables with integer values in the proper range.
+</p>
+<p>How does C understand <code>board[row][column]</code>?  First of all,
+<code>board</code> is converted automatically to a pointer to the zeroth
+element (at index zero) of <code>board</code>.  Adding <code>row</code> to that
+makes it point to the desired element.  Thus, <code>board[row]</code>&rsquo;s
+value is an element of <code>board</code>&mdash;an array of 8 pointers.
+</p>
+<p>However, as an expression with array type, it is converted
+automatically to a pointer to the array&rsquo;s zeroth element.  The second
+array index operation, <code>[column]</code>, accesses the chosen element
+from that array.
+</p>
+<p>As this shows, pointer-to-array types are meaningful in C.
+You can declare a variable that points to a row in a chess board
+like this:
+</p>
+<div class="example">
+<pre class="example">struct chesspiece *(*rowptr)[8];
+</pre></div>
+
+<p>This points to an array of 8 pointers to <code>struct chesspiece</code>.
+You can assign to it as follows:
+</p>
+<div class="example">
+<pre class="example">rowptr = &amp;board[5];
+</pre></div>
+
+<p>The dimensions don&rsquo;t have to be equal in length.  Here we declare
+<code>statepop</code> as an array to hold the population of each state in
+the United States for each year since 1900:
+</p>
+<div class="example">
+<pre class="example">#define NSTATES 50
+{
+  int nyears = current_year - 1900 + 1;
+  int statepop[NSTATES][nyears];
+  <span class="roman">&hellip;</span>
+}
+</pre></div>
+
+<p>The variable <code>statepop</code> is an array of <code>NSTATES</code> subarrays,
+each indexed by the year (counting from 1900).  Thus, to get the
+element for a particular state and year, we must subscript it first
+by the number that indicates the state, and second by the index for
+the year:
+</p>
+<div class="example">
+<pre class="example">statepop[state][year - 1900]
+</pre></div>
+
+<span id="index-array_002c-layout-in-memory"></span>
+<p>The subarrays within the multidimensional array are allocated
+consecutively in memory, and within each subarray, its elements are
+allocated consecutively in memory.  The most efficient way to process
+all the elements in the array is to scan the last subscript in the
+innermost loop.  This means consecutive accesses go to consecutive
+memory locations, which optimizes use of the processor&rsquo;s memory cache.
+For example:
+</p>
+<div class="example">
+<pre class="example">int total = 0;
+float average;
+
+for (int state = 0; state &lt; NSTATES, ++state)
+  {
+    for (int year = 0; year &lt; nyears; ++year)
+      {
+        total += statepop[state][year];
+      }
+  }
+
+average = total / nyears;
+</pre></div>
+
+<p>C&rsquo;s layout for multidimensional arrays is different from Fortran&rsquo;s
+layout.  In Fortran, a multidimensional array is not an array of
+arrays; rather, multidimensional arrays are a primitive feature, and
+it is the first index that varies most rapidly between consecutive
+memory locations.  Thus, the memory layout of a 50x114 array in C
+matches that of a 114x50 array in Fortran.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Constructing-Array-Values.html" accesskey="n" rel="next">Constructing Array Values</a>, Previous: <a href="Limitations-of-C-Arrays.html" accesskey="p" rel="prev">Limitations of C Arrays</a>, Up: <a href="Arrays.html" accesskey="u" rel="up">Arrays</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Narrow-Integers.html
===================================================================
--- public/doc/gnu-c/Narrow-Integers.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Narrow-Integers.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,98 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Narrow Integers (GNU C Language Manual)</title>
+
+<meta name="description" content="Narrow Integers (GNU C Language Manual)">
+<meta name="keywords" content="Narrow Integers (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Integer-Types.html" rel="up" title="Integer Types">
+<link href="Integer-Conversion.html" rel="next" title="Integer Conversion">
+<link href="Signed-and-Unsigned-Types.html" rel="prev" title="Signed and Unsigned Types">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Narrow-Integers"></span><div class="header">
+<p>
+Next: <a href="Integer-Conversion.html" accesskey="n" rel="next">Integer Conversion</a>, Previous: <a href="Signed-and-Unsigned-Types.html" accesskey="p" rel="prev">Signed and Unsigned Types</a>, Up: <a href="Integer-Types.html" accesskey="u" rel="up">Integer Types</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>
+</div>
+<hr>
+<span id="Narrow-Integers-1"></span><h4 class="subsection">11.1.3 Narrow Integers</h4>
+
+<p>The types that are narrower than <code>int</code> are rarely used for
+ordinary variables&mdash;we declare them <code>int</code> instead.  This is
+because C converts those narrower types to <code>int</code> for any
+arithmetic.  There is literally no reason to declare a local variable
+<code>char</code>, for instance.
+</p>
+<p>In particular, if the value is really a character, you should declare
+the variable <code>int</code>.  Not <code>char</code>!  Using that narrow type can
+force the compiler to truncate values for conversion, which is a
+waste.  Furthermore, some functions return either a character value,
+or -1 for &ldquo;no character.&rdquo;  Using <code>int</code> keeps those
+values distinct.
+</p>
+<p>The narrow integer types are useful as parts of other objects, such as
+arrays and structures.  Compare these array declarations, whose sizes
+on 32-bit processors are shown:
+</p>
+<div class="example">
+<pre class="example">signed char ac[1000];   /* <span class="roman">1000 bytes</span> */
+short as[1000];         /* <span class="roman">2000 bytes</span> */
+int ai[1000];           /* <span class="roman">4000 bytes</span> */
+long long all[1000];    /* <span class="roman">8000 bytes</span> */
+</pre></div>
+
+<p>In addition, character strings must be made up of <code>char</code>s,
+because that&rsquo;s what all the standard library string functions expect.
+Thus, array <code>ac</code> could be used as a character string, but the
+others could not be.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Nested-Functions.html
===================================================================
--- public/doc/gnu-c/Nested-Functions.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Nested-Functions.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,212 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Nested Functions (GNU C Language Manual)</title>
+
+<meta name="description" content="Nested Functions (GNU C Language Manual)">
+<meta name="keywords" content="Nested Functions (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Advanced-Definitions.html" rel="up" title="Advanced Definitions">
+<link href="Inline-Function-Definitions.html" rel="next" title="Inline Function Definitions">
+<link href="Variable-Number-of-Arguments.html" rel="prev" title="Variable Number of Arguments">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Nested-Functions"></span><div class="header">
+<p>
+Next: <a href="Inline-Function-Definitions.html" accesskey="n" rel="next">Inline Function Definitions</a>, Previous: <a href="Variable-Number-of-Arguments.html" accesskey="p" rel="prev">Variable Number of Arguments</a>, Up: <a href="Advanced-Definitions.html" accesskey="u" rel="up">Advanced Definitions</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>
+</div>
+<hr>
+<span id="Nested-Functions-1"></span><h4 class="subsection">22.7.3 Nested Functions</h4>
+<span id="index-nested-functions"></span>
+<span id="index-functions_002c-nested"></span>
+<span id="index-downward-funargs"></span>
+<span id="index-thunks"></span>
+
+<p>A <em>nested function</em> is a function defined inside another function.
+The nested function&rsquo;s name is local to the block where it is defined.
+For example, here we define a nested function named <code>square</code>, and
+call it twice:
+</p>
+<div class="example">
+<pre class="example">foo (double a, double b)
+{
+  double square (double z) { return z * z; }
+
+  return square (a) + square (b);
+}
+</pre></div>
+
+<p>The nested function can access all the variables of the containing
+function that are visible at the point of its definition.  This is
+called <em>lexical scoping</em>.  For example, here we show a nested
+function that uses an inherited variable named <code>offset</code>:
+</p>
+<div class="example">
+<pre class="example">bar (int *array, int offset, int size)
+{
+  int access (int *array, int index)
+    { return array[index + offset]; }
+  int i;
+  <span class="roman">&hellip;</span>
+  for (i = 0; i &lt; size; i++)
+    <span class="roman">&hellip;</span> access (array, i) <span class="roman">&hellip;</span>
+}
+</pre></div>
+
+<p>Nested function definitions can appear wherever automatic variable
+declarations are allowed; that is, in any block, interspersed with the
+other declarations and statements in the block.
+</p>
+<p>The nested function&rsquo;s name is visible only within the parent block;
+the name&rsquo;s scope starts from its definition and continues to the end
+of the containing block.  If the nested function&rsquo;s name
+is the same as the parent function&rsquo;s name, there wil be
+no way to refer to the parent function inside the scope of the
+name of the nested function.
+</p>
+<p>Using <code>extern</code> or <code>static</code> on a nested function definition
+is an error.
+</p>
+<p>It is possible to call the nested function from outside the scope of its
+name by storing its address or passing the address to another function.
+You can do this safely, but you must be careful:
+</p>
+<div class="example">
+<pre class="example">hack (int *array, int size, int addition)
+{
+  void store (int index, int value)
+    { array[index] = value + addition; }
+
+  intermediate (store, size);
+}
+</pre></div>
+
+<p>Here, the function <code>intermediate</code> receives the address of
+<code>store</code> as an argument.  If <code>intermediate</code> calls <code>store</code>,
+the arguments given to <code>store</code> are used to store into <code>array</code>.
+<code>store</code> also accesses <code>hack</code>&rsquo;s local variable <code>addition</code>.
+</p>
+<p>It is safe for <code>intermediate</code> to call <code>store</code> because
+<code>hack</code>&rsquo;s stack frame, with its arguments and local variables,
+continues to exist during the call to <code>intermediate</code>.
+</p>
+<p>Calling the nested function through its address after the containing
+function has exited is asking for trouble.  If it is called after a
+containing scope level has exited, and if it refers to some of the
+variables that are no longer in scope, it will refer to memory
+containing junk or other data.  It&rsquo;s not wise to take the risk.
+</p>
+<p>The GNU C Compiler implements taking the address of a nested function
+using a technique called <em>trampolines</em>.  This technique was
+described in <cite>Lexical Closures for C<tt>++</tt></cite> (Thomas M. Breuel,
+USENIX C<tt>++</tt> Conference Proceedings, October 17&ndash;21, 1988).
+</p>
+<p>A nested function can jump to a label inherited from a containing
+function, provided the label was explicitly declared in the containing
+function (see <a href="Local-Labels.html">Local Labels</a>).  Such a jump returns instantly to the
+containing function, exiting the nested function that did the
+<code>goto</code> and any intermediate function invocations as well.  Here
+is an example:
+</p>
+<div class="example">
+<pre class="example">bar (int *array, int offset, int size)
+{
+  /* <span class="roman">Explicitly declare the label <code>failure</code>.</span> */
+  __label__ failure;
+  int access (int *array, int index)
+    {
+      if (index &gt; size)
+        /* <span class="roman">Exit this function,</span>
+           <span class="roman">and return to <code>bar</code>.</span> */
+        goto failure;
+      return array[index + offset];
+    }
+</pre><pre class="example">
+
+</pre><pre class="example">  int i;
+  <span class="roman">&hellip;</span>
+  for (i = 0; i &lt; size; i++)
+    <span class="roman">&hellip;</span> access (array, i) <span class="roman">&hellip;</span>
+  <span class="roman">&hellip;</span>
+  return 0;
+
+ /* <span class="roman">Control comes here from <code>access</code>
+    if it does the <code>goto</code>.</span>  */
+ failure:
+  return -1;
+}
+</pre></div>
+
+<p>To declare the nested function before its definition, use
+<code>auto</code> (which is otherwise meaningless for function declarations;
+see <a href="auto-and-register.html">auto and register</a>).  For example,
+</p>
+<div class="example">
+<pre class="example">bar (int *array, int offset, int size)
+{
+  auto int access (int *, int);
+  <span class="roman">&hellip;</span>
+  <span class="roman">&hellip;</span> access (array, i) <span class="roman">&hellip;</span>
+  <span class="roman">&hellip;</span>
+  int access (int *array, int index)
+    {
+      <span class="roman">&hellip;</span>
+    }
+  <span class="roman">&hellip;</span>
+}
+</pre></div>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Inline-Function-Definitions.html" accesskey="n" rel="next">Inline Function Definitions</a>, Previous: <a href="Variable-Number-of-Arguments.html" accesskey="p" rel="prev">Variable Number of Arguments</a>, Up: <a href="Advanced-Definitions.html" accesskey="u" rel="up">Advanced Definitions</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Null-Directive.html
===================================================================
--- public/doc/gnu-c/Null-Directive.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Null-Directive.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,76 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Null Directive (GNU C Language Manual)</title>
+
+<meta name="description" content="Null Directive (GNU C Language Manual)">
+<meta name="keywords" content="Null Directive (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Preprocessing.html" rel="up" title="Preprocessing">
+<link href="Integers-in-Depth.html" rel="next" title="Integers in Depth">
+<link href="Line-Control.html" rel="prev" title="Line Control">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Null-Directive"></span><div class="header">
+<p>
+Previous: <a href="Line-Control.html" accesskey="p" rel="prev">Line Control</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>
+</div>
+<hr>
+<span id="Null-Directive-1"></span><h3 class="section">26.9 Null Directive</h3>
+
+<span id="index-null-directive"></span>
+<p>The <em>null directive</em> consists of a <code>#</code> followed by a newline,
+with only whitespace and comments in between.  It has no
+effect on the output of the compiler.
+</p>
+
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Null-Pointers.html
===================================================================
--- public/doc/gnu-c/Null-Pointers.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Null-Pointers.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,121 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Null Pointers (GNU C Language Manual)</title>
+
+<meta name="description" content="Null Pointers (GNU C Language Manual)">
+<meta name="keywords" content="Null Pointers (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Pointers.html" rel="up" title="Pointers">
+<link href="Invalid-Dereference.html" rel="next" title="Invalid Dereference">
+<link href="Pointer-Dereference.html" rel="prev" title="Pointer Dereference">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Null-Pointers"></span><div class="header">
+<p>
+Next: <a href="Invalid-Dereference.html" accesskey="n" rel="next">Invalid Dereference</a>, Previous: <a href="Pointer-Dereference.html" accesskey="p" rel="prev">Pointer Dereference</a>, Up: <a href="Pointers.html" accesskey="u" rel="up">Pointers</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>
+</div>
+<hr>
+<span id="Null-Pointers-1"></span><h3 class="section">14.6 Null Pointers</h3>
+<span id="index-null-pointers"></span>
+<span id="index-pointers_002c-null"></span>
+
+
+<p>A pointer value can be <em>null</em>, which means it does not point to
+any object.  The cleanest way to get a null pointer is by writing
+<code>NULL</code>, a standard macro defined in <samp>stddef.h</samp>.  You can
+also do it by casting 0 to the desired pointer type, as in
+<code>(char *) 0</code>.  (The cast operator performs explicit type conversion;
+See <a href="Explicit-Type-Conversion.html">Explicit Type Conversion</a>.)
+</p>
+<p>You can store a null pointer in any lvalue whose data type
+is a pointer type:
+</p>
+<div class="example">
+<pre class="example">char *foo;
+foo = NULL;
+</pre></div>
+
+<p>These two, if consecutive, can be combined into a declaration with
+initializer,
+</p>
+<div class="example">
+<pre class="example">char *foo = NULL;
+</pre></div>
+
+<p>You can also explicitly cast <code>NULL</code> to the specific pointer type
+you want&mdash;it makes no difference.
+</p>
+<div class="example">
+<pre class="example">char *foo;
+foo = (char *) NULL;
+</pre></div>
+
+<p>To test whether a pointer is null, compare it with zero or
+<code>NULL</code>, as shown here:
+</p>
+<div class="example">
+<pre class="example">if (p != NULL)
+  /* <span class="roman"><code>p</code> is not null.</span>  */
+  operate (p);
+</pre></div>
+
+<p>Since testing a pointer for not being null is basic and frequent, all
+but beginners in C will understand the conditional without need for
+<code>!= NULL</code>:
+</p>
+<div class="example">
+<pre class="example">if (p)
+  /* <span class="roman"><code>p</code> is not null.</span>  */
+  operate (p);
+</pre></div>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Null-Statement.html
===================================================================
--- public/doc/gnu-c/Null-Statement.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Null-Statement.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,84 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Null Statement (GNU C Language Manual)</title>
+
+<meta name="description" content="Null Statement (GNU C Language Manual)">
+<meta name="keywords" content="Null Statement (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Statements.html" rel="up" title="Statements">
+<link href="goto-Statement.html" rel="next" title="goto Statement">
+<link href="Case-Ranges.html" rel="prev" title="Case Ranges">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Null-Statement"></span><div class="header">
+<p>
+Next: <a href="goto-Statement.html" accesskey="n" rel="next">goto Statement</a>, Previous: <a href="Case-Ranges.html" accesskey="p" rel="prev">Case Ranges</a>, Up: <a href="Statements.html" accesskey="u" rel="up">Statements</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>
+</div>
+<hr>
+<span id="Null-Statement-1"></span><h3 class="section">19.11 Null Statement</h3>
+<span id="index-null-statement"></span>
+<span id="index-statement_002c-null"></span>
+
+<p>A <em>null statement</em> is just a semicolon.  It does nothing.
+</p>
+<p>A null statement is a placeholder for use where a statement is
+grammatically required, but there is nothing to be done.  For
+instance, sometimes all the work of a <code>for</code>-loop is done in the
+<code>for</code>-header itself, leaving no work for the body.  Here is an
+example that searches for the first newline in <code>array</code>:
+</p>
+<div class="example">
+<pre class="example">for (p = array; *p != '\n'; p++)
+  ;
+</pre></div>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Numeric-Comparisons.html
===================================================================
--- public/doc/gnu-c/Numeric-Comparisons.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Numeric-Comparisons.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,114 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Numeric Comparisons (GNU C Language Manual)</title>
+
+<meta name="description" content="Numeric Comparisons (GNU C Language Manual)">
+<meta name="keywords" content="Numeric Comparisons (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Arithmetic.html" rel="up" title="Arithmetic">
+<link href="Shift-Operations.html" rel="next" title="Shift Operations">
+<link href="Division-and-Remainder.html" rel="prev" title="Division and Remainder">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Numeric-Comparisons"></span><div class="header">
+<p>
+Next: <a href="Shift-Operations.html" accesskey="n" rel="next">Shift Operations</a>, Previous: <a href="Division-and-Remainder.html" accesskey="p" rel="prev">Division and Remainder</a>, Up: <a href="Arithmetic.html" accesskey="u" rel="up">Arithmetic</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>
+</div>
+<hr>
+<span id="Numeric-Comparisons-1"></span><h3 class="section">6.6 Numeric Comparisons</h3>
+<span id="index-numeric-comparisons"></span>
+<span id="index-comparisons"></span>
+<span id="index-operators_002c-comparison"></span>
+<span id="index-equal-operator"></span>
+<span id="index-not_002dequal-operator"></span>
+<span id="index-less_002dthan-operator"></span>
+<span id="index-greater_002dthan-operator"></span>
+<span id="index-less_002dor_002dequal-operator"></span>
+<span id="index-greater_002dor_002dequal-operator"></span>
+<span id="index-operator_002c-equal"></span>
+<span id="index-operator_002c-not_002dequal"></span>
+<span id="index-operator_002c-less_002dthan"></span>
+<span id="index-operator_002c-greater_002dthan"></span>
+<span id="index-operator_002c-less_002dor_002dequal"></span>
+<span id="index-operator_002c-greater_002dor_002dequal"></span>
+<span id="index-truth-value"></span>
+
+<p>There are two kinds of comparison operators: <em>equality</em> and
+<em>ordering</em>.  Equality comparisons test whether two expressions
+have the same value.  The result is a <em>truth value</em>: a number that
+is 1 for &ldquo;true&rdquo; and 0 for &ldquo;false.&rdquo;
+</p>
+<div class="example">
+<pre class="example">a == b   /* <span class="roman">Test for equal.</span>  */
+a != b   /* <span class="roman">Test for not equal.</span>  */
+</pre></div>
+
+<p>The equality comparison is written <code>==</code> because plain <code>=</code>
+is the assignment operator.
+</p>
+<p>Ordering comparisons test which operand is greater or less.  Their
+results are truth values.  These are the ordering comparisons of C:
+</p>
+<div class="example">
+<pre class="example">a &lt; b   /* <span class="roman">Test for less-than.</span>  */
+a &gt; b   /* <span class="roman">Test for greater-than.</span>  */
+a &lt;= b  /* <span class="roman">Test for less-than-or-equal.</span>  */
+a &gt;= b  /* <span class="roman">Test for greater-than-or-equal.</span>  */
+</pre></div>
+
+<p>For any integers <code>a</code> and <code>b</code>, exactly one of the comparisons
+<code>a &lt; b</code>, <code>a == b</code> and <code>a &gt; b</code> is true, just as in
+mathematics.  However, if <code>a</code> and <code>b</code> are special floating
+point values (not ordinary numbers), all three can be false.
+See <a href="Special-Float-Values.html">Special Float Values</a>, and <a href="Invalid-Optimizations.html">Invalid Optimizations</a>.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Object_002dlike-Macros.html
===================================================================
--- public/doc/gnu-c/Object_002dlike-Macros.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Object_002dlike-Macros.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,195 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Object-like Macros (GNU C Language Manual)</title>
+
+<meta name="description" content="Object-like Macros (GNU C Language Manual)">
+<meta name="keywords" content="Object-like Macros (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Macros.html" rel="up" title="Macros">
+<link href="Function_002dlike-Macros.html" rel="next" title="Function-like Macros">
+<link href="Macros.html" rel="prev" title="Macros">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Object_002dlike-Macros"></span><div class="header">
+<p>
+Next: <a href="Function_002dlike-Macros.html" accesskey="n" rel="next">Function-like Macros</a>, Up: <a href="Macros.html" accesskey="u" rel="up">Macros</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>
+</div>
+<hr>
+<span id="Object_002dlike-Macros-1"></span><h4 class="subsection">26.5.1 Object-like Macros</h4>
+<span id="index-object_002dlike-macro"></span>
+<span id="index-symbolic-constants"></span>
+<span id="index-manifest-constants"></span>
+
+<p>An <em>object-like macro</em> is a simple identifier that will be
+replaced by a code fragment.  It is called object-like because in most
+cases the use of the macro looks like reference to a data object in
+code that uses it.  These macros are most commonly used to give
+symbolic names to numeric constants.
+</p>
+<span id="index-_0023define"></span>
+<p>The way to define macros with the <code>#define</code> directive.
+<code>#define</code> is followed by the name of the macro and then the token
+sequence it should be an abbreviation for, which is variously referred
+to as the macro&rsquo;s <em>body</em>, <em>expansion</em> or <em>replacement
+list</em>.  For example,
+</p>
+<div class="example">
+<pre class="example">#define BUFFER_SIZE 1024
+</pre></div>
+
+<p>defines a macro named <code>BUFFER_SIZE</code> as an abbreviation for the
+token <code>1024</code>.  If somewhere after this <code>#define</code> directive
+there comes a C statement of the form
+</p>
+<div class="example">
+<pre class="example">foo = (char *) malloc (BUFFER_SIZE);
+</pre></div>
+
+<p>then preprocessing will recognize and <em>expand</em> the macro
+<code>BUFFER_SIZE</code>, so that compilation will see the tokens:
+</p>
+<div class="example">
+<pre class="example">foo = (char *) malloc (1024);
+</pre></div>
+
+<p>By convention, macro names are written in upper case.  Programs are
+easier to read when it is possible to tell at a glance which names are
+macros.  Macro names that start with &lsquo;<samp>__</samp>&rsquo; are reserved for
+internal uses, and many of them are defined automatically, so don&rsquo;t
+define such macro names unless you really know what you&rsquo;re doing.
+Likewise for macro names that start with &lsquo;<samp>_</samp>&rsquo; and an upper-case letter.
+</p>
+<p>The macro&rsquo;s body ends at the end of the <code>#define</code> line.  You may
+continue the definition onto multiple lines, if necessary, using
+backslash-newline.  When the macro is expanded, however, it will all
+come out on one line.  For example,
+</p>
+<div class="example">
+<pre class="example">#define NUMBERS 1, \
+                2, \
+                3
+int x[] = { NUMBERS };
+     &rarr; int x[] = { 1, 2, 3 };
+</pre></div>
+
+<p>The most common visible consequence of this is surprising line numbers
+in error messages.
+</p>
+<p>There is no restriction on what can go in a macro body provided it
+decomposes into valid preprocessing tokens.  Parentheses need not
+balance, and the body need not resemble valid C code.  (If it does not,
+you may get error messages from the C compiler when you use the macro.)
+</p>
+<p>Preprocessing scans the program sequentially.  A macro definition
+takes effect right after its appearance.  Therefore, the following
+input
+</p>
+<div class="example">
+<pre class="example">foo = X;
+#define X 4
+bar = X;
+</pre></div>
+
+<p>produces
+</p>
+<div class="example">
+<pre class="example">foo = X;
+bar = 4;
+</pre></div>
+
+<p>When preprocessing expands a macro name, the macro&rsquo;s expansion
+replaces the macro invocation, then the expansion is examined for more
+macros to expand.  For example,
+</p>
+<div class="example">
+<pre class="example">#define TABLESIZE BUFSIZE
+#define BUFSIZE 1024
+TABLESIZE
+     &rarr; BUFSIZE
+     &rarr; 1024
+</pre></div>
+
+<p><code>TABLESIZE</code> is expanded first to produce <code>BUFSIZE</code>, then that
+macro is expanded to produce the final result, <code>1024</code>.
+</p>
+<p>Notice that <code>BUFSIZE</code> was not defined when <code>TABLESIZE</code> was
+defined.  The <code>#define</code> for <code>TABLESIZE</code> uses exactly the
+expansion you specify&mdash;in this case, <code>BUFSIZE</code>&mdash;and does not
+check to see whether it too contains macro names.  Only when you
+<em>use</em> <code>TABLESIZE</code> is the result of its expansion scanned for
+more macro names.
+</p>
+<p>This makes a difference if you change the definition of <code>BUFSIZE</code>
+at some point in the source file.  <code>TABLESIZE</code>, defined as shown,
+will always expand using the definition of <code>BUFSIZE</code> that is
+currently in effect:
+</p>
+<div class="example">
+<pre class="example">#define BUFSIZE 1020
+#define TABLESIZE BUFSIZE
+#undef BUFSIZE
+#define BUFSIZE 37
+</pre></div>
+
+<p>Now <code>TABLESIZE</code> expands (in two stages) to <code>37</code>.
+</p>
+<p>If the expansion of a macro contains its own name, either directly or
+via intermediate macros, it is not expanded again when the expansion is
+examined for more macros.  This prevents infinite recursion.
+See <a href="Self_002dReferential-Macros.html">Self-Referential Macros</a>, for the precise details.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Function_002dlike-Macros.html" accesskey="n" rel="next">Function-like Macros</a>, Up: <a href="Macros.html" accesskey="u" rel="up">Macros</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Obsolete-Definitions.html
===================================================================
--- public/doc/gnu-c/Obsolete-Definitions.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Obsolete-Definitions.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,80 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Obsolete Definitions (GNU C Language Manual)</title>
+
+<meta name="description" content="Obsolete Definitions (GNU C Language Manual)">
+<meta name="keywords" content="Obsolete Definitions (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Functions.html" rel="up" title="Functions">
+<link href="Old-GNU-Inlining.html" rel="next" title="Old GNU Inlining">
+<link href="Inline-Function-Definitions.html" rel="prev" title="Inline Function Definitions">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Obsolete-Definitions"></span><div class="header">
+<p>
+Previous: <a href="Advanced-Definitions.html" accesskey="p" rel="prev">Advanced Definitions</a>, Up: <a href="Functions.html" accesskey="u" rel="up">Functions</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>
+</div>
+<hr>
+<span id="Obsolete-Function-Features"></span><h3 class="section">22.8 Obsolete Function Features</h3>
+
+<p>These features of function definitions are still used in old
+programs, but you shouldn&rsquo;t write code this way today.
+If you are just learning C, you can skip this section.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Old-GNU-Inlining.html" accesskey="1">Old GNU Inlining</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">An older inlining technique.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Old_002dStyle-Function-Definitions.html" accesskey="2">Old-Style Function Definitions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Original K&amp;R style functions.
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Old-GNU-Inlining.html
===================================================================
--- public/doc/gnu-c/Old-GNU-Inlining.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Old-GNU-Inlining.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,91 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Old GNU Inlining (GNU C Language Manual)</title>
+
+<meta name="description" content="Old GNU Inlining (GNU C Language Manual)">
+<meta name="keywords" content="Old GNU Inlining (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Obsolete-Definitions.html" rel="up" title="Obsolete Definitions">
+<link href="Old_002dStyle-Function-Definitions.html" rel="next" title="Old-Style Function Definitions">
+<link href="Obsolete-Definitions.html" rel="prev" title="Obsolete Definitions">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Old-GNU-Inlining"></span><div class="header">
+<p>
+Next: <a href="Old_002dStyle-Function-Definitions.html" accesskey="n" rel="next">Old-Style Function Definitions</a>, Up: <a href="Obsolete-Definitions.html" accesskey="u" rel="up">Obsolete Definitions</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>
+</div>
+<hr>
+<span id="Older-GNU-C-Inlining"></span><h4 class="subsection">22.8.1 Older GNU C Inlining</h4>
+
+<p>The GNU C spec for inline functions, before GCC version 5, defined
+<code>extern inline</code> on a function definition to mean to inline calls
+to it but <em>not</em> generate code for the function that could be
+called at run time.  By contrast, <code>inline</code> without <code>extern</code>
+specified to generate run-time code for the function.  In effect, ISO
+incompatibly flipped the meanings of these two cases.  We changed GCC
+in version 5 to adopt the ISO specification.
+</p>
+<p>Many programs still use these cases with the previous GNU C meanings.
+You can specify use of those meanings with the option
+<samp>-fgnu89-inline</samp>.  You can also specify this for a single
+function with <code>__attribute__ ((gnu_inline))</code>.  Here&rsquo;s an example:
+</p>
+<div class="example">
+<pre class="example">inline __attribute__ ((gnu_inline))
+int
+inc (int *a)
+{
+  (*a)++;
+}
+</pre></div>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Old_002dStyle-Function-Definitions.html
===================================================================
--- public/doc/gnu-c/Old_002dStyle-Function-Definitions.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Old_002dStyle-Function-Definitions.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,142 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Old-Style Function Definitions (GNU C Language Manual)</title>
+
+<meta name="description" content="Old-Style Function Definitions (GNU C Language Manual)">
+<meta name="keywords" content="Old-Style Function Definitions (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Obsolete-Definitions.html" rel="up" title="Obsolete Definitions">
+<link href="Compatible-Types.html" rel="next" title="Compatible Types">
+<link href="Old-GNU-Inlining.html" rel="prev" title="Old GNU Inlining">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Old_002dStyle-Function-Definitions"></span><div class="header">
+<p>
+Previous: <a href="Old-GNU-Inlining.html" accesskey="p" rel="prev">Old GNU Inlining</a>, Up: <a href="Obsolete-Definitions.html" accesskey="u" rel="up">Obsolete Definitions</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>
+</div>
+<hr>
+<span id="Old_002dStyle-Function-Definitions-1"></span><h4 class="subsection">22.8.2 Old-Style Function Definitions</h4>
+<span id="index-old_002dstyle-function-definitions"></span>
+<span id="index-function-definitions_002c-old_002dstyle"></span>
+<span id="index-K_0026R_002dstyle-function-definitions"></span>
+
+<p>The syntax of C traditionally allows omitting the data type in a
+function declaration if it specifies a storage class or a qualifier.
+Then the type defaults to <code>int</code>.  For example:
+</p>
+<div class="example">
+<pre class="example">static foo (double x);
+</pre></div>
+
+<p>defaults the return type to <code>int</code>.  This is bad practice; if you
+see it, fix it.
+</p>
+<p>An <em>old-style</em> (or &ldquo;K&amp;R&rdquo;) function definition is the way
+function definitions were written in the 1980s.  It looks like this:
+</p>
+<div class="example">
+<pre class="example"><var>rettype</var>
+<var>function</var> (<var>parmnames</var>)
+  <var>parm_declarations</var>
+{
+  <var>body</var>
+}
+</pre></div>
+
+<p>In <var>parmnames</var>, only the parameter names are listed, separated by
+commas.  Then <var>parm_declarations</var> declares their data types; these
+declarations look just like variable declarations.  If a parameter is
+listed in <var>parmnames</var> but has no declaration, it is implicitly
+declared <code>int</code>.
+</p>
+<p>There is no reason to write a definition this way nowadays, but they
+can still be seen in older GNU programs.
+</p>
+<p>An old-style variadic function definition looks like this:
+</p>
+<div class="example">
+<pre class="example">#include &lt;varargs.h&gt;
+
+int
+add_multiple_values (va_alist)
+    va_dcl
+{
+  int argcount;
+  int counter, total = 0;
+
+  /* <span class="roman">Declare a variable of type <code>va_list</code>.</span> */
+  va_list argptr;
+
+  /* <span class="roman">Initialize that variable.</span> */
+  va_start (argptr);
+
+  /* <span class="roman">Get the first argument (fixed).</span> */
+  argcount = va_arg (int);
+
+  for (counter = 0; counter &lt; argcount; counter++)
+    {
+      /* <span class="roman">Get the next additional argument.</span> */
+      total += va_arg (argptr, int);
+    }
+
+  /* <span class="roman">End use of the <code>argptr</code> variable.</span> */
+  va_end (argptr);
+
+  return total;
+}
+</pre></div>
+
+<p>Note that the old-style variadic function definition has no fixed
+parameter variables; all arguments must be obtained with
+<code>va_arg</code>.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Omitted-for_002dExpressions.html
===================================================================
--- public/doc/gnu-c/Omitted-for_002dExpressions.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Omitted-for_002dExpressions.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,135 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Omitted for-Expressions (GNU C Language Manual)</title>
+
+<meta name="description" content="Omitted for-Expressions (GNU C Language Manual)">
+<meta name="keywords" content="Omitted for-Expressions (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Loop-Statements.html" rel="up" title="Loop Statements">
+<link href="for_002dIndex-Declarations.html" rel="next" title="for-Index Declarations">
+<link href="Example-of-for.html" rel="prev" title="Example of for">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Omitted-for_002dExpressions"></span><div class="header">
+<p>
+Next: <a href="for_002dIndex-Declarations.html" accesskey="n" rel="next">for-Index Declarations</a>, Previous: <a href="Example-of-for.html" accesskey="p" rel="prev">Example of for</a>, Up: <a href="Loop-Statements.html" accesskey="u" rel="up">Loop Statements</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>
+</div>
+<hr>
+<span id="Omitted-for_002dExpressions-1"></span><h4 class="subsection">19.6.6 Omitted <code>for</code>-Expressions</h4>
+
+<p>A fully-fleshed <code>for</code> statement contains all these parts,
+</p>
+<div class="example">
+<pre class="example">for (<var>start</var>; <var>continue-test</var>; <var>advance</var>)
+  <var>body</var>
+</pre></div>
+
+<p>but you can omit any of the three expressions inside the parentheses.
+The parentheses and the two semicolons are required syntactically, but
+the expressions between them may be missing.  A missing expression
+means this loop doesn&rsquo;t use that particular feature of the <code>for</code>
+statement.
+</p>
+<p>Instead of using <var>start</var>, you can do the loop preparation
+before the <code>for</code> statement: the effect is the same.  So we
+could have written the beginning of the previous example this way:
+</p>
+<div class="example">
+<pre class="example">int i = 0;
+for (; i &lt; n; ++i)
+</pre></div>
+
+<p>instead of this way:
+</p>
+<div class="example">
+<pre class="example">int i;
+for (i = 0; i &lt; n; ++i)
+</pre></div>
+
+<p>Omitting <var>continue-test</var> means the loop runs forever (or until
+something else causes exit from it).  Statements inside the loop can
+test conditions for termination and use &lsquo;<samp>break;</samp>&rsquo; to exit.  This
+is more flexible since you can put those tests anywhere in the loop,
+not solely at the beginning.
+</p>
+<p>Putting an expression in <var>advance</var> is almost equivalent to writing
+it at the end of the loop body; it does almost the same thing.  The
+only difference is for the <code>continue</code> statement (see <a href="continue-Statement.html">continue Statement</a>).  So we could have written this:
+</p>
+<div class="example">
+<pre class="example">for (i = 0; i &lt; n;)
+  {
+    <span class="roman">&hellip;</span>
+    ++i;
+  }
+</pre></div>
+
+<p>instead of this:
+</p>
+<div class="example">
+<pre class="example">for (i = 0; i &lt; n; ++i)
+  {
+    <span class="roman">&hellip;</span>
+  }
+</pre></div>
+
+<p>The choice is mainly a matter of what is more readable for
+programmers.  However, there is also a syntactic difference:
+<var>advance</var> is an expression, not a statement.  It can&rsquo;t include
+loops, blocks, declarations, etc.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="for_002dIndex-Declarations.html" accesskey="n" rel="next">for-Index Declarations</a>, Previous: <a href="Example-of-for.html" accesskey="p" rel="prev">Example of for</a>, Up: <a href="Loop-Statements.html" accesskey="u" rel="up">Loop Statements</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Omitting-Types.html
===================================================================
--- public/doc/gnu-c/Omitting-Types.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Omitting-Types.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,81 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Omitting Types (GNU C Language Manual)</title>
+
+<meta name="description" content="Omitting Types (GNU C Language Manual)">
+<meta name="keywords" content="Omitting Types (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Variables.html" rel="up" title="Variables">
+<link href="Type-Qualifiers.html" rel="next" title="Type Qualifiers">
+<link href="auto-and-register.html" rel="prev" title="auto and register">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Omitting-Types"></span><div class="header">
+<p>
+Previous: <a href="auto-and-register.html" accesskey="p" rel="prev">auto and register</a>, Up: <a href="Variables.html" accesskey="u" rel="up">Variables</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>
+</div>
+<hr>
+<span id="Omitting-Types-in-Declarations"></span><h3 class="section">20.11 Omitting Types in Declarations</h3>
+<span id="index-omitting-types-in-declarations"></span>
+
+<p>The syntax of C traditionally allows omitting the data type in a
+declaration if it specifies a storage class, a type qualifier (see the
+next chapter), or <code>auto</code> or <code>register</code>.  Then the type
+defaults to <code>int</code>.  For example:
+</p>
+<div class="example">
+<pre class="example">auto foo = 42;
+</pre></div>
+
+<p>This is bad practice; if you see it, fix it.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Once_002dOnly-Headers.html
===================================================================
--- public/doc/gnu-c/Once_002dOnly-Headers.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Once_002dOnly-Headers.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,118 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Once-Only Headers (GNU C Language Manual)</title>
+
+<meta name="description" content="Once-Only Headers (GNU C Language Manual)">
+<meta name="keywords" content="Once-Only Headers (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Header-Files.html" rel="up" title="Header Files">
+<link href="Computed-Includes.html" rel="next" title="Computed Includes">
+<link href="Search-Path.html" rel="prev" title="Search Path">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Once_002dOnly-Headers"></span><div class="header">
+<p>
+Next: <a href="Computed-Includes.html" accesskey="n" rel="next">Computed Includes</a>, Previous: <a href="Search-Path.html" accesskey="p" rel="prev">Search Path</a>, Up: <a href="Header-Files.html" accesskey="u" rel="up">Header Files</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>
+</div>
+<hr>
+<span id="Once_002dOnly-Headers-1"></span><h4 class="subsection">26.4.4 Once-Only Headers</h4>
+<span id="index-repeated-inclusion"></span>
+<span id="index-including-just-once"></span>
+<span id="index-wrapper-_0023ifndef"></span>
+
+<p>If a header file happens to be included twice, the compiler will process
+its contents twice.  This is very likely to cause an error, e.g. when the
+compiler sees the same structure definition twice.
+</p>
+<p>The standard way to prevent this is to enclose the entire real contents
+of the file in a conditional, like this:
+</p>
+<div class="example">
+<pre class="example">/* File foo.  */
+#ifndef FILE_FOO_SEEN
+#define FILE_FOO_SEEN
+
+<var>the entire file</var>
+
+#endif /* !FILE_FOO_SEEN */
+</pre></div>
+
+<p>This construct is commonly known as a <em>wrapper #ifndef</em>.  When the
+header is included again, the conditional will be false, because
+<code>FILE_FOO_SEEN</code> is defined.  Preprocessing skips over the entire
+contents of the file, so that compilation will never &ldquo;see&rdquo; the file
+contents twice in one module.
+</p>
+<p>GCC optimizes this case even further.  It remembers when a header file
+has a wrapper <code>#ifndef</code>.  If a subsequent <code>#include</code>
+specifies that header, and the macro in the <code>#ifndef</code> is still
+defined, it does not bother to rescan the file at all.
+</p>
+<p>You can put comments in the header file outside the wrapper.  They
+do not interfere with this optimization.
+</p>
+<span id="index-controlling-macro"></span>
+<span id="index-guard-macro"></span>
+<p>The macro <code>FILE_FOO_SEEN</code> is called the <em>controlling macro</em>
+or <em>guard macro</em>.  In a user header file, the macro name should
+not begin with &lsquo;<samp>_</samp>&rsquo;.  In a system header file, it should begin
+with &lsquo;<samp>__</samp>&rsquo; (or &lsquo;<samp>_</samp>&rsquo; followed by an upper-case letter) to avoid
+conflicts with user programs.  In any kind of header file, the macro
+name should contain the name of the file and some additional text, to
+avoid conflicts with other header files.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Computed-Includes.html" accesskey="n" rel="next">Computed Includes</a>, Previous: <a href="Search-Path.html" accesskey="p" rel="prev">Search Path</a>, Up: <a href="Header-Files.html" accesskey="u" rel="up">Header Files</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Operand-Promotions.html
===================================================================
--- public/doc/gnu-c/Operand-Promotions.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Operand-Promotions.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,83 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Operand Promotions (GNU C Language Manual)</title>
+
+<meta name="description" content="Operand Promotions (GNU C Language Manual)">
+<meta name="keywords" content="Operand Promotions (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Type-Conversions.html" rel="up" title="Type Conversions">
+<link href="Common-Type.html" rel="next" title="Common Type">
+<link href="Argument-Promotions.html" rel="prev" title="Argument Promotions">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Operand-Promotions"></span><div class="header">
+<p>
+Next: <a href="Common-Type.html" accesskey="n" rel="next">Common Type</a>, Previous: <a href="Argument-Promotions.html" accesskey="p" rel="prev">Argument Promotions</a>, Up: <a href="Type-Conversions.html" accesskey="u" rel="up">Type Conversions</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>
+</div>
+<hr>
+<span id="Operand-Promotions-1"></span><h3 class="section">24.4 Operand Promotions</h3>
+<span id="index-operand-promotions"></span>
+
+<p>The operands in arithmetic operations undergo type conversion automatically.
+These <em>operand promotions</em> are the same as the argument promotions
+except without converting <code>float</code> to <code>double</code>.  In other words,
+the operand promotions convert
+</p>
+<ul>
+<li> <code>char</code> or <code>short</code> (whether signed or not) to <code>int</code>.
+
+</li><li> an array to a pointer to its zeroth element, and
+
+</li><li> a function name to a pointer to that function.
+</li></ul>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Operator-Precedence-Problems.html
===================================================================
--- public/doc/gnu-c/Operator-Precedence-Problems.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Operator-Precedence-Problems.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,137 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Operator Precedence Problems (GNU C Language Manual)</title>
+
+<meta name="description" content="Operator Precedence Problems (GNU C Language Manual)">
+<meta name="keywords" content="Operator Precedence Problems (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Macro-Pitfalls.html" rel="up" title="Macro Pitfalls">
+<link href="Swallowing-the-Semicolon.html" rel="next" title="Swallowing the Semicolon">
+<link href="Misnesting.html" rel="prev" title="Misnesting">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Operator-Precedence-Problems"></span><div class="header">
+<p>
+Next: <a href="Swallowing-the-Semicolon.html" accesskey="n" rel="next">Swallowing the Semicolon</a>, Previous: <a href="Misnesting.html" accesskey="p" rel="prev">Misnesting</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>
+</div>
+<hr>
+<span id="Operator-Precedence-Problems-1"></span><h4 class="subsubsection">26.5.10.2 Operator Precedence Problems</h4>
+<span id="index-parentheses-in-macro-bodies"></span>
+
+<p>You may have noticed that in most of the macro definition examples shown
+above, each occurrence of a macro parameter name had parentheses around
+it.  In addition, another pair of parentheses usually surrounds the
+entire macro definition.  Here is why it is best to write macros that
+way.
+</p>
+<p>Suppose you define a macro as follows,
+</p>
+<div class="example">
+<pre class="example">#define ceil_div(x, y) (x + y - 1) / y
+</pre></div>
+
+<p>whose purpose is to divide, rounding up.  (One use for this operation is
+to compute how many <code>int</code> objects are needed to hold a certain
+number of <code>char</code> objects.)  Then suppose it is used as follows:
+</p>
+<div class="example">
+<pre class="example">a = ceil_div (b &amp; c, sizeof (int));
+     &rarr; a = (b &amp; c + sizeof (int) - 1) / sizeof (int);
+</pre></div>
+
+<p>This does not do what is intended.  The operator-precedence rules of
+C make it equivalent to this:
+</p>
+<div class="example">
+<pre class="example">a = (b &amp; (c + sizeof (int) - 1)) / sizeof (int);
+</pre></div>
+
+<p>What we want is this:
+</p>
+<div class="example">
+<pre class="example">a = ((b &amp; c) + sizeof (int) - 1)) / sizeof (int);
+</pre></div>
+
+<p>Defining the macro as
+</p>
+<div class="example">
+<pre class="example">#define ceil_div(x, y) ((x) + (y) - 1) / (y)
+</pre></div>
+
+<p>provides the desired result.
+</p>
+<p>Unintended grouping can result in another way.  Consider <code>sizeof
+ceil_div(1, 2)</code>.  That has the appearance of a C expression that would
+compute the size of the type of <code>ceil_div (1, 2)</code>, but in fact it
+means something very different.  Here is what it expands to:
+</p>
+<div class="example">
+<pre class="example">sizeof ((1) + (2) - 1) / (2)
+</pre></div>
+
+<p>This would take the size of an integer and divide it by two.  The
+precedence rules have put the division outside the <code>sizeof</code> when it
+was intended to be inside.
+</p>
+<p>Parentheses around the entire macro definition prevent such problems.
+Here, then, is the recommended way to define <code>ceil_div</code>:
+</p>
+<div class="example">
+<pre class="example">#define ceil_div(x, y) (((x) + (y) - 1) / (y))
+</pre></div>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Swallowing-the-Semicolon.html" accesskey="n" rel="next">Swallowing the Semicolon</a>, Previous: <a href="Misnesting.html" accesskey="p" rel="prev">Misnesting</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Operators_002fPunctuation.html
===================================================================
--- public/doc/gnu-c/Operators_002fPunctuation.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Operators_002fPunctuation.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,129 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Operators/Punctuation (GNU C Language Manual)</title>
+
+<meta name="description" content="Operators/Punctuation (GNU C Language Manual)">
+<meta name="keywords" content="Operators/Punctuation (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Lexical-Syntax.html" rel="up" title="Lexical Syntax">
+<link href="Line-Continuation.html" rel="next" title="Line Continuation">
+<link href="Identifiers.html" rel="prev" title="Identifiers">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Operators_002fPunctuation"></span><div class="header">
+<p>
+Next: <a href="Line-Continuation.html" accesskey="n" rel="next">Line Continuation</a>, Previous: <a href="Identifiers.html" accesskey="p" rel="prev">Identifiers</a>, Up: <a href="Lexical-Syntax.html" accesskey="u" rel="up">Lexical Syntax</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>
+</div>
+<hr>
+<span id="Operators-and-Punctuation"></span><h3 class="section">5.6 Operators and Punctuation</h3>
+<span id="index-operators"></span>
+<span id="index-punctuation"></span>
+
+<p>Here we describe the lexical syntax of operators and punctuation in C.
+The specific operators of C and their meanings are presented in
+subsequent chapters.
+</p>
+<p>Most operators in C consist of one or two characters that can&rsquo;t be
+used in identifiers.  The characters used for operators in C are
+&lsquo;<samp>!~^&amp;|*/%+-=&lt;&gt;,.?:</samp>&rsquo;.
+</p>
+<p>Some operators are a single character.  For instance, &lsquo;<samp>-</samp>&rsquo; is the
+operator for negation (with one operand) and the operator for
+subtraction (with two operands).
+</p>
+<p>Some operators are two characters.  For example, &lsquo;<samp>++</samp>&rsquo; is the
+increment operator.  Recognition of multicharacter operators works by
+grouping together as many consecutive characters as can constitute one
+operator.
+</p>
+<p>For instance, the character sequence &lsquo;<samp>++</samp>&rsquo; is always interpreted
+as the increment operator; therefore, if we want to write two
+consecutive instances of the operator &lsquo;<samp>+</samp>&rsquo;, we must separate them
+with a space so that they do not combine as one token.  Applying the
+same rule, <code>a+++++b</code> is always tokenized as <code>a++&nbsp;++&nbsp;+&nbsp;b<!-- /@w --></code>, not as <code>a++&nbsp;+&nbsp;++b<!-- /@w --></code>, even though the latter could be part
+of a valid C program and the former could not (since <code>a++</code>
+is not an lvalue and thus can&rsquo;t be the operand of <code>++</code>).
+</p>
+<p>A few C operators are keywords rather than special characters.  They
+include <code>sizeof</code> (see <a href="Type-Size.html">Type Size</a>) and <code>_Alignof</code>
+(see <a href="Type-Alignment.html">Type Alignment</a>).
+</p>
+<p>The characters &lsquo;<samp>;{}[]()</samp>&rsquo; are used for punctuation and grouping.
+Semicolon (&lsquo;<samp>;</samp>&rsquo;) ends a statement.  Braces (&lsquo;<samp>{</samp>&rsquo; and
+&lsquo;<samp>}</samp>&rsquo;) begin and end a block at the statement level
+(see <a href="Blocks.html">Blocks</a>), and surround the initializer (see <a href="Initializers.html">Initializers</a>)
+for a variable with multiple elements or components (such as arrays or
+structures).
+</p>
+<p>Square brackets (&lsquo;<samp>[</samp>&rsquo; and &lsquo;<samp>]</samp>&rsquo;) do array indexing, as in
+<code>array[5]</code>.
+</p>
+<p>Parentheses are used in expressions for explicit nesting of
+expressions (see <a href="Basic-Arithmetic.html">Basic Arithmetic</a>), around the parameter
+declarations in a function declaration or definition, and around the
+arguments in a function call, as in <code>printf (&quot;Foo %d\n&quot;, i)</code>
+(see <a href="Function-Calls.html">Function Calls</a>).  Several kinds of statements also use
+parentheses as part of their syntax&mdash;for instance, <code>if</code>
+statements, <code>for</code> statements, <code>while</code> statements, and
+<code>switch</code> statements.  See <a href="if-Statement.html">if Statement</a>, and following
+sections.
+</p>
+<p>Parentheses are also required around the operand of the operator
+keywords <code>sizeof</code> and <code>_Alignof</code> when the operand is a data
+type rather than a value.  See <a href="Type-Size.html">Type Size</a>.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Line-Continuation.html" accesskey="n" rel="next">Line Continuation</a>, Previous: <a href="Identifiers.html" accesskey="p" rel="prev">Identifiers</a>, Up: <a href="Lexical-Syntax.html" accesskey="u" rel="up">Lexical Syntax</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Optimization-Pragmas.html
===================================================================
--- public/doc/gnu-c/Optimization-Pragmas.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Optimization-Pragmas.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,145 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Optimization Pragmas (GNU C Language Manual)</title>
+
+<meta name="description" content="Optimization Pragmas (GNU C Language Manual)">
+<meta name="keywords" content="Optimization Pragmas (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Pragmas.html" rel="up" title="Pragmas">
+<link href="Static-Assertions.html" rel="next" title="Static Assertions">
+<link href="Severity-Pragmas.html" rel="prev" title="Severity Pragmas">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Optimization-Pragmas"></span><div class="header">
+<p>
+Previous: <a href="Severity-Pragmas.html" accesskey="p" rel="prev">Severity Pragmas</a>, Up: <a href="Pragmas.html" accesskey="u" rel="up">Pragmas</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>
+</div>
+<hr>
+<span id="Optimization-Pragmas-1"></span><h4 class="subsection">30.1.3 Optimization Pragmas</h4>
+
+<p>These pragmas enable a particular optimization for specific function
+definitions.  The settings take effect at the end of a function
+definition, so the clean place to use these pragmas is between
+function definitions.
+</p>
+<dl compact="compact">
+<dt><code>#pragma GCC optimize <var>optimization</var></code></dt>
+<dt><code>_Pragma (&quot;GCC optimize <var>optimization</var>&quot;)</code></dt>
+<dd><p>These pragmas enable the optimization <var>optimization</var> for the
+following functions.  For example,
+</p>
+<div class="example">
+<pre class="example">_Pragma (&quot;GCC optimize -fforward-propagate&quot;)
+</pre></div>
+
+<p>says to apply the &lsquo;<samp>forward-propagate</samp>&rsquo; optimization to all
+following function definitions.  Specifying optimizations for
+individual functions, rather than for the entire program, is rare but
+can be useful for getting around a bug in the compiler.
+</p>
+<p>If <var>optimization</var> does not correspond to a defined optimization
+option, the pragma is erroneous.  To turn off an optimization, use the
+corresponding &lsquo;<samp>-fno-</samp>&rsquo; option, such as
+&lsquo;<samp>-fno-forward-propagate</samp>&rsquo;.
+</p>
+</dd>
+<dt><code>#pragma GCC target <var>optimizations</var></code></dt>
+<dt><code>_Pragma (&quot;GCC target <var>optimizations</var>&quot;)</code></dt>
+<dd><p>The pragma &lsquo;<samp>GCC target</samp>&rsquo; is similar to &lsquo;<samp>GCC optimize</samp>&rsquo; but is
+used for platform-specific optimizations.  Thus,
+</p>
+<div class="example">
+<pre class="example">_Pragma (&quot;GCC target popcnt&quot;)
+</pre></div>
+
+<p>activates the optimization &lsquo;<samp>popcnt</samp>&rsquo; for all
+following function definitions.  This optimization is supported
+on a few common targets but not on others.
+</p>
+</dd>
+<dt><code>#pragma GCC push_options</code></dt>
+<dt><code>_Pragma (&quot;GCC push_options&quot;)</code></dt>
+<dd><p>The &lsquo;<samp>push_options</samp>&rsquo; pragma saves on a stack the current settings
+specified with the &lsquo;<samp>target</samp>&rsquo; and &lsquo;<samp>optimize</samp>&rsquo; pragmas.
+</p>
+</dd>
+<dt><code>#pragma GCC pop_options</code></dt>
+<dt><code>_Pragma (&quot;GCC pop_options&quot;)</code></dt>
+<dd><p>The &lsquo;<samp>pop_options</samp>&rsquo; pragma pops saved settings from that stack.
+</p>
+<p>Here&rsquo;s an example of using this stack.
+</p>
+<div class="example">
+<pre class="example">_Pragma (&quot;GCC push_options&quot;)
+_Pragma (&quot;GCC optimize forward-propagate&quot;)
+
+/* <span class="roman">Functions to compile</span>
+   <span class="roman">with the <code>forward-propagate</code> optimization.</span> */
+
+_Pragma (&quot;GCC pop_options&quot;)
+/* <span class="roman">Ends enablement of <code>forward-propagate</code>.</span> */
+</pre></div>
+
+</dd>
+<dt><code>#pragma GCC reset_options</code></dt>
+<dt><code>_Pragma (&quot;GCC reset_options&quot;)</code></dt>
+<dd><p>Clears all pragma-defined &lsquo;<samp>target</samp>&rsquo; and &lsquo;<samp>optimize</samp>&rsquo;
+optimization settings.
+</p></dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Previous: <a href="Severity-Pragmas.html" accesskey="p" rel="prev">Severity Pragmas</a>, Up: <a href="Pragmas.html" accesskey="u" rel="up">Pragmas</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Optimization-and-Ordering.html
===================================================================
--- public/doc/gnu-c/Optimization-and-Ordering.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Optimization-and-Ordering.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,98 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Optimization and Ordering (GNU C Language Manual)</title>
+
+<meta name="description" content="Optimization and Ordering (GNU C Language Manual)">
+<meta name="keywords" content="Optimization and Ordering (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Order-of-Execution.html" rel="up" title="Order of Execution">
+<link href="Primitive-Types.html" rel="next" title="Primitive Types">
+<link href="Ordering-of-Operands.html" rel="prev" title="Ordering of Operands">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Optimization-and-Ordering"></span><div class="header">
+<p>
+Previous: <a href="Ordering-of-Operands.html" accesskey="p" rel="prev">Ordering of Operands</a>, Up: <a href="Order-of-Execution.html" accesskey="u" rel="up">Order of Execution</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>
+</div>
+<hr>
+<span id="Optimization-and-Ordering-1"></span><h3 class="section">10.6 Optimization and Ordering</h3>
+<span id="index-optimization-and-ordering"></span>
+<span id="index-ordering-and-optimization"></span>
+
+<p>Sequence points limit the compiler&rsquo;s freedom to reorder operations
+arbitrarily, but optimizations can still reorder them if the compiler
+concludes that this won&rsquo;t alter the results.  Thus, in this code,
+</p>
+<div class="example">
+<pre class="example">x++;
+y = z;
+x++;
+</pre></div>
+
+<p>there is a sequence point after each statement, so the code is
+supposed to increment <code>x</code> once before the assignment to <code>y</code>
+and once after.  However, incrementing <code>x</code> has no effect on
+<code>y</code> or <code>z</code>, and setting <code>y</code> can&rsquo;t affect <code>x</code>, so
+the code could be optimized into this:
+</p>
+<div class="example">
+<pre class="example">y = z;
+x += 2;
+</pre></div>
+
+<p>Normally that has no effect except to make the program faster.  But
+there are special situations where it can cause trouble due to things
+that the compiler cannot know about, such as shared memory.  To limit
+optimization in those places, use the <code>volatile</code> type qualifier
+(see <a href="volatile.html">volatile</a>).
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Order-of-Execution.html
===================================================================
--- public/doc/gnu-c/Order-of-Execution.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Order-of-Execution.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,92 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Order of Execution (GNU C Language Manual)</title>
+
+<meta name="description" content="Order of Execution (GNU C Language Manual)">
+<meta name="keywords" content="Order of Execution (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html" rel="up" title="Top">
+<link href="Reordering-of-Operands.html" rel="next" title="Reordering of Operands">
+<link href="Binary-Operator-Grammar.html" rel="prev" title="Binary Operator Grammar">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Order-of-Execution"></span><div class="header">
+<p>
+Next: <a href="Primitive-Types.html" accesskey="n" rel="next">Primitive Types</a>, Previous: <a href="Binary-Operator-Grammar.html" accesskey="p" rel="prev">Binary Operator Grammar</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</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>
+</div>
+<hr>
+<span id="Order-of-Execution-1"></span><h2 class="chapter">10 Order of Execution</h2>
+<span id="index-order-of-execution"></span>
+
+<p>The order of execution of a C program is not always obvious, and not
+necessarily predictable.  This chapter describes what you can count on.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Reordering-of-Operands.html" accesskey="1">Reordering of Operands</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Operations in C are not necessarily computed
+                                   in the order they are written.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Associativity-and-Ordering.html" accesskey="2">Associativity and Ordering</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Some associative operations are performed
+                                   in a particular order; others are not.     
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Sequence-Points.html" accesskey="3">Sequence Points</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Some guarantees about the order of operations.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Postincrement-and-Ordering.html" accesskey="4">Postincrement and Ordering</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Ambiguous excution order with postincrement.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Ordering-of-Operands.html" accesskey="5">Ordering of Operands</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Evaluation order of operands
+                                   and function arguments.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Optimization-and-Ordering.html" accesskey="6">Optimization and Ordering</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Compiler optimizations can reorder operations
+                                   only if it has no impact on program results.
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Ordering-of-Operands.html
===================================================================
--- public/doc/gnu-c/Ordering-of-Operands.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Ordering-of-Operands.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,101 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Ordering of Operands (GNU C Language Manual)</title>
+
+<meta name="description" content="Ordering of Operands (GNU C Language Manual)">
+<meta name="keywords" content="Ordering of Operands (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Order-of-Execution.html" rel="up" title="Order of Execution">
+<link href="Optimization-and-Ordering.html" rel="next" title="Optimization and Ordering">
+<link href="Postincrement-and-Ordering.html" rel="prev" title="Postincrement and Ordering">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Ordering-of-Operands"></span><div class="header">
+<p>
+Next: <a href="Optimization-and-Ordering.html" accesskey="n" rel="next">Optimization and Ordering</a>, Previous: <a href="Postincrement-and-Ordering.html" accesskey="p" rel="prev">Postincrement and Ordering</a>, Up: <a href="Order-of-Execution.html" accesskey="u" rel="up">Order of Execution</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>
+</div>
+<hr>
+<span id="Ordering-of-Operands-1"></span><h3 class="section">10.5 Ordering of Operands</h3>
+<span id="index-ordering-of-operands-1"></span>
+<span id="index-operand-ordering"></span>
+
+<p>Operands and arguments can be computed in any order, but there are limits to
+this intermixing in GNU C:
+</p>
+<ul>
+<li> The operands of a binary arithmetic operator can be computed in either
+order, but they can&rsquo;t be intermixed: one of them has to come first,
+followed by the other.  Any side effects in the operand that&rsquo;s computed
+first are executed before the other operand is computed.
+
+</li><li> That applies to assignment operators too, except that in simple assignment
+the previous value of the left operand is unused.
+
+</li><li> The arguments in a function call can be computed in any order, but
+they can&rsquo;t be intermixed.  Thus, one argument is fully computed, then
+another, and so on until they are all done.  Any side effects in one argument
+are executed before computation of another argument begins.
+</li></ul>
+
+<p>These rules don&rsquo;t cover side effects caused by postincrement and
+postdecrement operators&mdash;those can be deferred up to the next
+sequence point.
+</p>
+<p>If you want to get pedantic, the fact is that GCC can reorder the
+computations in many other ways provided that doesn&rsquo;t alter the result
+of running the program.  However, because they don&rsquo;t alter the result
+of running the program, they are negligible, unless you are concerned
+with the values in certain variables at various times as seen by other
+processes.  In those cases, you can use <code>volatile</code> to prevent
+optimizations that would make them behave strangely.  See <a href="volatile.html">volatile</a>.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Other-Data-Types.html
===================================================================
--- public/doc/gnu-c/Other-Data-Types.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Other-Data-Types.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,80 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Other Data Types (GNU C Language Manual)</title>
+
+<meta name="description" content="Other Data Types (GNU C Language Manual)">
+<meta name="keywords" content="Other Data Types (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Primitive-Types.html" rel="up" title="Primitive Types">
+<link href="Type-Designators.html" rel="next" title="Type Designators">
+<link href="The-Void-Type.html" rel="prev" title="The Void Type">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Other-Data-Types"></span><div class="header">
+<p>
+Next: <a href="Type-Designators.html" accesskey="n" rel="next">Type Designators</a>, Previous: <a href="The-Void-Type.html" accesskey="p" rel="prev">The Void Type</a>, Up: <a href="Primitive-Types.html" accesskey="u" rel="up">Primitive Types</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>
+</div>
+<hr>
+<span id="Other-Data-Types-1"></span><h3 class="section">11.5 Other Data Types</h3>
+
+<p>Beyond the primitive types, C provides several ways to construct new
+data types.  For instance, you can define <em>pointers</em>, values that
+represent the addresses of other data (see <a href="Pointers.html">Pointers</a>).  You can
+define <em>structures</em>, as in many other languages
+(see <a href="Structures.html">Structures</a>), and <em>unions</em>, which specify multiple ways
+to look at the same memory space (see <a href="Unions.html">Unions</a>).  <em>Enumerations</em>
+are collections of named integer codes (see <a href="Enumeration-Types.html">Enumeration Types</a>).
+</p>
+<p><em>Array types</em> in C are used for allocating space for objects,
+but C does not permit operating on an array value as a whole.  See <a href="Arrays.html">Arrays</a>.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Overlaying-Structures.html
===================================================================
--- public/doc/gnu-c/Overlaying-Structures.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Overlaying-Structures.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,103 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Overlaying Structures (GNU C Language Manual)</title>
+
+<meta name="description" content="Overlaying Structures (GNU C Language Manual)">
+<meta name="keywords" content="Overlaying Structures (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Structures.html" rel="up" title="Structures">
+<link href="Structure-Assignment.html" rel="next" title="Structure Assignment">
+<link href="Flexible-Array-Fields.html" rel="prev" title="Flexible Array Fields">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Overlaying-Structures"></span><div class="header">
+<p>
+Next: <a href="Structure-Assignment.html" accesskey="n" rel="next">Structure Assignment</a>, Previous: <a href="Flexible-Array-Fields.html" accesskey="p" rel="prev">Flexible Array Fields</a>, Up: <a href="Structures.html" accesskey="u" rel="up">Structures</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>
+</div>
+<hr>
+<span id="Overlaying-Different-Structures"></span><h3 class="section">15.11 Overlaying Different Structures</h3>
+<span id="index-overlaying-structures"></span>
+<span id="index-structures_002c-overlaying"></span>
+
+<p>Be careful about using different structure types to refer to the same
+memory within one function, because GNU C can optimize code assuming
+it never does that.  See <a href="Aliasing.html">Aliasing</a>.  Here&rsquo;s an example of the kind of
+aliasing that can cause the problem:
+</p>
+<div class="example">
+<pre class="example">struct a { int size; char *data; };
+struct b { int size; char *data; };
+struct a foo;
+struct b *q = (struct b *) &amp;foo;
+</pre></div>
+
+<p>Here <code>q</code> points to the same memory that the variable <code>foo</code>
+occupies, but they have two different types.  The two types
+<code>struct a</code> and <code>struct b</code> are defined alike, but they are
+not the same type.  Interspersing references using the two types,
+like this,
+</p>
+<div class="example">
+<pre class="example">p-&gt;size = 0;
+q-&gt;size = 1;
+x = p-&gt;size;
+</pre></div>
+
+<p>allows GNU C to assume that <code>p-&gt;size</code> is still zero when it is
+copied into <code>x</code>.  The compiler &ldquo;knows&rdquo; that <code>q</code> points to
+a <code>struct b</code> and this cannot overlap with a <code>struct a</code>.
+</p>
+<p>Other compilers might also do this optimization.  The ISO C standard
+considers such code erroneous, precisely so that this optimization
+will be valid.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Packed-Structures.html
===================================================================
--- public/doc/gnu-c/Packed-Structures.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Packed-Structures.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,98 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Packed Structures (GNU C Language Manual)</title>
+
+<meta name="description" content="Packed Structures (GNU C Language Manual)">
+<meta name="keywords" content="Packed Structures (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Structures.html" rel="up" title="Structures">
+<link href="Bit-Fields.html" rel="next" title="Bit Fields">
+<link href="Structure-Layout.html" rel="prev" title="Structure Layout">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Packed-Structures"></span><div class="header">
+<p>
+Next: <a href="Bit-Fields.html" accesskey="n" rel="next">Bit Fields</a>, Previous: <a href="Structure-Layout.html" accesskey="p" rel="prev">Structure Layout</a>, Up: <a href="Structures.html" accesskey="u" rel="up">Structures</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>
+</div>
+<hr>
+<span id="Packed-Structures-1"></span><h3 class="section">15.5 Packed Structures</h3>
+<span id="index-packed-structures"></span>
+<span id="index-_005f_005fattribute_005f_005f_0028_0028packed_0029_0029"></span>
+
+<p>In GNU C you can force a structure to be laid out with no gaps by
+adding <code>__attribute__((packed))</code> after <code>struct</code> (or at the
+end of the structure type declaration).  Here&rsquo;s an example:
+</p>
+<div class="example">
+<pre class="example">struct __attribute__((packed)) foo
+{
+  char a;
+  int c;
+  char b;
+};
+</pre></div>
+
+<p>Without <code>__attribute__((packed))</code>, this structure occupies 12
+bytes (as described in the previous section), assuming 4-byte
+alignment for <code>int</code>.  With <code>__attribute__((packed))</code>, it is
+only 6 bytes long&mdash;the sum of the lengths of its fields.
+</p>
+<p>Use of <code>__attribute__((packed))</code> often results in fields that
+don&rsquo;t have the normal alignment for their types.  Taking the address
+of such a field can result in an invalid pointer because of its
+improper alignment.  Dereferencing such a pointer can cause a
+<code>SIGSEGV</code> signal on a machine that doesn&rsquo;t, in general, allow
+unaligned pointers.
+</p>
+<p>See <a href="Attributes.html">Attributes</a>.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Packing-With-Unions.html
===================================================================
--- public/doc/gnu-c/Packing-With-Unions.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Packing-With-Unions.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,115 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Packing With Unions (GNU C Language Manual)</title>
+
+<meta name="description" content="Packing With Unions (GNU C Language Manual)">
+<meta name="keywords" content="Packing With Unions (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Structures.html" rel="up" title="Structures">
+<link href="Cast-to-Union.html" rel="next" title="Cast to Union">
+<link href="Unions.html" rel="prev" title="Unions">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Packing-With-Unions"></span><div class="header">
+<p>
+Next: <a href="Cast-to-Union.html" accesskey="n" rel="next">Cast to Union</a>, Previous: <a href="Unions.html" accesskey="p" rel="prev">Unions</a>, Up: <a href="Structures.html" accesskey="u" rel="up">Structures</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>
+</div>
+<hr>
+<span id="Packing-With-Unions-1"></span><h3 class="section">15.14 Packing With Unions</h3>
+
+<p>Sometimes we design a union with the intention of packing various
+kinds of objects into a certain amount of memory space.  For example.
+</p>
+<div class="example">
+<pre class="example">union bytes8
+{
+  long long big_int_elt;
+  double double_elt;
+  struct { int first, second; } two_ints;
+  struct { void *first, *second; } two_ptrs;
+};
+
+union bytes8 *p;
+</pre></div>
+
+<p>This union makes it possible to look at 8 bytes of data that <code>p</code>
+points to as a single 8-byte integer (<code>p-&gt;big_int_elt</code>), as a
+single floating-point number (<code>p-&gt;double_elt</code>), as a pair of
+integers (<code>p-&gt;two_ints.first</code> and <code>p-&gt;two_ints.second</code>), or
+as a pair of pointers (<code>p-&gt;two_ptrs.first</code> and
+<code>p-&gt;two_ptrs.second</code>).
+</p>
+<p>To pack storage with such a union makes assumptions about the sizes of
+all the types involved.  This particular union was written expecting a
+pointer to have the same size as <code>int</code>.  On a machine where one
+pointer takes 8 bytes, the code using this union probably won&rsquo;t work
+as expected.  The union, as such, will function correctly&mdash;if you
+store two values through <code>two_ints</code> and extract them through
+<code>two_ints</code>, you will get the same integers back&mdash;but the part of
+the program that expects the union to be 8 bytes long could
+malfunction, or at least use too much space.
+</p>
+<p>The above example shows one case where a <code>struct</code> type with no
+tag can be useful.  Another way to get effectively the same result
+is with arrays as members of the union:
+</p>
+<div class="example">
+<pre class="example">union eight_bytes
+{
+  long long big_int_elt;
+  double double_elt;
+  int two_ints[2];
+  void *two_ptrs[2];
+};
+</pre></div>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Passing-Array-Args.html
===================================================================
--- public/doc/gnu-c/Passing-Array-Args.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Passing-Array-Args.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,143 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Passing Array Args (GNU C Language Manual)</title>
+
+<meta name="description" content="Passing Array Args (GNU C Language Manual)">
+<meta name="keywords" content="Passing Array Args (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Arrays-as-Parameters.html" rel="up" title="Arrays as Parameters">
+<link href="Array-Parm-Qualifiers.html" rel="next" title="Array Parm Qualifiers">
+<link href="Array-Parm-Pointer.html" rel="prev" title="Array Parm Pointer">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Passing-Array-Args"></span><div class="header">
+<p>
+Next: <a href="Array-Parm-Qualifiers.html" accesskey="n" rel="next">Array Parm Qualifiers</a>, Previous: <a href="Array-Parm-Pointer.html" accesskey="p" rel="prev">Array Parm Pointer</a>, Up: <a href="Arrays-as-Parameters.html" accesskey="u" rel="up">Arrays as Parameters</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>
+</div>
+<hr>
+<span id="Passing-array-arguments"></span><h4 class="subsubsection">22.1.4.2 Passing array arguments</h4>
+
+<p>The function call passes this pointer by
+value, like all argument values in C.  However, the result is
+paradoxical in that the array itself is passed by reference: its
+contents are treated as shared memory&mdash;shared between the caller and
+the called function, that is.  When <code>clobber4</code> assigns to element
+4 of <code>array</code>, the effect is to alter element 4 of the array
+specified in the call.
+</p>
+<div class="example">
+<pre class="example">#include &lt;stddef.h&gt;  /* <span class="roman">Defines <code>NULL</code>.</span> */
+#include &lt;stdlib.h&gt;  /* <span class="roman">Declares <code>malloc</code>,</span> */
+                     /* <span class="roman">Defines <code>EXIT_SUCCESS</code>.</span> */
+
+int
+main (void)
+{
+  int data[] = {1, 2, 3, 4, 5, 6};
+  int i;
+
+  /* <span class="roman">Show the initial value of element 4.</span> */
+  for (i = 0; i &lt; 6; i++)
+    printf (&quot;data[%d] = %d\n&quot;, i, data[i]);
+
+  printf (&quot;\n&quot;);
+
+  clobber4 (data);
+
+  /* <span class="roman">Show that element 4 has been changed.</span> */
+  for (i = 0; i &lt; 6; i++)
+    printf (&quot;data[%d] = %d\n&quot;, i, data[i]);
+
+  printf (&quot;\n&quot;);
+
+  return EXIT_SUCCESS;
+}
+</pre></div>
+
+<p>shows that <code>data[4]</code> has become zero after the call to
+<code>clobber4</code>.
+</p>
+<p>The array <code>data</code> has 6 elements, but passing it to a function
+whose argument type is written as <code>int [20]</code> is not an error,
+because that really stands for <code>int *</code>.  The pointer that is the
+real argument carries no indication of the length of the array it
+points into.  It is not required to point to the beginning of the
+array, either.  For instance,
+</p>
+<div class="example">
+<pre class="example">clobber4 (data+1);
+</pre></div>
+
+<p>passes an &ldquo;array&rdquo; that starts at element 1 of <code>data</code>, and the
+effect is to zero <code>data[5]</code> instead of <code>data[4]</code>.
+</p>
+<p>If all calls to the function will provide an array of a particular
+size, you can specify the size of the array to be <code>static</code>:
+</p>
+<div class="example">
+<pre class="example">void
+clobber4 (int array[static 20])
+<span class="roman">&hellip;</span>
+</pre></div>
+
+<p>This is a promise to the compiler that the function will always be
+called with an array of 20 elements, so that the compiler can optimize
+code accordingly.  If the code breaks this promise and calls the
+function with, for example, a shorter array, unpredictable things may
+happen.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Array-Parm-Qualifiers.html" accesskey="n" rel="next">Array Parm Qualifiers</a>, Previous: <a href="Array-Parm-Pointer.html" accesskey="p" rel="prev">Array Parm Pointer</a>, Up: <a href="Arrays-as-Parameters.html" accesskey="u" rel="up">Arrays as Parameters</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Pointer-Arithmetic-Drawbacks.html
===================================================================
--- public/doc/gnu-c/Pointer-Arithmetic-Drawbacks.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Pointer-Arithmetic-Drawbacks.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,103 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Pointer Arithmetic Drawbacks (GNU C Language Manual)</title>
+
+<meta name="description" content="Pointer Arithmetic Drawbacks (GNU C Language Manual)">
+<meta name="keywords" content="Pointer Arithmetic Drawbacks (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Pointers.html" rel="up" title="Pointers">
+<link href="Pointer_002dInteger-Conversion.html" rel="next" title="Pointer-Integer Conversion">
+<link href="Pointer-Increment_002fDecrement.html" rel="prev" title="Pointer Increment/Decrement">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Pointer-Arithmetic-Drawbacks"></span><div class="header">
+<p>
+Next: <a href="Pointer_002dInteger-Conversion.html" accesskey="n" rel="next">Pointer-Integer Conversion</a>, Previous: <a href="Pointer-Increment_002fDecrement.html" accesskey="p" rel="prev">Pointer Increment/Decrement</a>, Up: <a href="Pointers.html" accesskey="u" rel="up">Pointers</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>
+</div>
+<hr>
+<span id="Drawbacks-of-Pointer-Arithmetic"></span><h3 class="section">14.14 Drawbacks of Pointer Arithmetic</h3>
+<span id="index-drawbacks-of-pointer-arithmetic"></span>
+<span id="index-pointer-arithmetic_002c-drawbacks"></span>
+
+<p>Pointer arithmetic is clean and elegant, but it is also the cause of a
+major security flaw in the C language.  Theoretically, it is only
+valid to adjust a pointer within one object allocated as a unit in
+memory.  However, if you unintentionally adjust a pointer across the
+bounds of the object and into some other object, the system has no way
+to detect this error.
+</p>
+<p>A bug which does that can easily result in clobbering part of another
+object.  For example, with <code>array[-1]</code> you can read or write the
+nonexistent element before the beginning of an array&mdash;probably part
+of some other data.
+</p>
+<p>Combining pointer arithmetic with casts between pointer types, you can
+create a pointer that fails to be properly aligned for its type.  For
+example,
+</p>
+<div class="example">
+<pre class="example">int a[2];
+char *pa = (char *)a;
+int *p = (int *)(pa + 1);
+</pre></div>
+
+<p>gives <code>p</code> a value pointing to an &ldquo;integer&rdquo; that includes part
+of <code>a[0]</code> and part of <code>a[1]</code>.  Dereferencing that with
+<code>*p</code> can cause a fatal <code>SIGSEGV</code> signal or it can return the
+contents of that badly aligned <code>int</code> (see <a href="Signals.html">Signals</a>.  If it
+&ldquo;works,&rdquo; it may be quite slow.  It can also cause aliasing
+confusions (see <a href="Aliasing.html">Aliasing</a>).
+</p>
+<p><strong>Warning:</strong> Using improperly aligned pointers is risky&mdash;don&rsquo;t do it
+unless it is really necessary.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Pointer-Arithmetic-Low-Level.html
===================================================================
--- public/doc/gnu-c/Pointer-Arithmetic-Low-Level.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Pointer-Arithmetic-Low-Level.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,118 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Pointer Arithmetic Low Level (GNU C Language Manual)</title>
+
+<meta name="description" content="Pointer Arithmetic Low Level (GNU C Language Manual)">
+<meta name="keywords" content="Pointer Arithmetic Low Level (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Pointers.html" rel="up" title="Pointers">
+<link href="Pointer-Increment_002fDecrement.html" rel="next" title="Pointer Increment/Decrement">
+<link href="Pointers-and-Arrays.html" rel="prev" title="Pointers and Arrays">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Pointer-Arithmetic-Low-Level"></span><div class="header">
+<p>
+Next: <a href="Pointer-Increment_002fDecrement.html" accesskey="n" rel="next">Pointer Increment/Decrement</a>, Previous: <a href="Pointers-and-Arrays.html" accesskey="p" rel="prev">Pointers and Arrays</a>, Up: <a href="Pointers.html" accesskey="u" rel="up">Pointers</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>
+</div>
+<hr>
+<span id="Pointer-Arithmetic-at-Low-Level"></span><h3 class="section">14.12 Pointer Arithmetic at Low Level</h3>
+<span id="index-pointer-arithmetic_002c-low-level"></span>
+<span id="index-low-level-pointer-arithmetic"></span>
+
+<p>The behavior of pointer arithmetic is theoretically defined only when
+the pointer values all point within one object allocated in memory.
+But the addition and subtraction operators can&rsquo;t tell whether the
+pointer values are all within one object.  They don&rsquo;t know where
+objects start and end.  So what do they really do?
+</p>
+<p>Adding pointer <var>p</var> to integer <var>i</var> treats <var>p</var> as a memory
+address, which is in fact an integer&mdash;call it <var>pint</var>.  It treats
+<var>i</var> as a number of elements of the type that <var>p</var> points to.
+These elements&rsquo; sizes add up to <code><var>i</var> * sizeof (*<var>p</var>)</code>.
+So the sum, as an integer, is <code><var>pint</var> + <var>i</var> * sizeof
+(*<var>p</var>)</code>.  This value is reinterpreted as a pointer like <var>p</var>.
+</p>
+<p>If the starting pointer value <var>p</var> and the result do not point at
+parts of the same object, the operation is not officially legitimate,
+and C code is not &ldquo;supposed&rdquo; to do it.  But you can do it anyway,
+and it gives precisely the results described by the procedure above.
+In some special situations it can do something useful, but non-wizards
+should avoid it.
+</p>
+<p>Here&rsquo;s a function to offset a pointer value <em>as if</em> it pointed to
+an object of any given size, by explicitly performing that calculation:
+</p>
+<div class="example">
+<pre class="example">#include &lt;stdint.h&gt;
+
+void *
+ptr_add (void *p, int i, int objsize)
+{
+  intptr_t p_address = (long) p;
+  intptr_t totalsize = i * objsize;
+  intptr_t new_address = p_address + totalsize;
+  return (void *) new_address;
+}
+</pre></div>
+
+<p><span id="index-intptr_005ft"></span>
+This does the same job as <code><var>p</var> + <var>i</var></code> with the proper
+pointer type for <var>p</var>.  It uses the type <code>intptr_t</code>, which is
+defined in the header file <samp>stdint.h</samp>.  (In practice, <code>long
+long</code> would always work, but it is cleaner to use <code>intptr_t</code>.)
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Pointer-Increment_002fDecrement.html" accesskey="n" rel="next">Pointer Increment/Decrement</a>, Previous: <a href="Pointers-and-Arrays.html" accesskey="p" rel="prev">Pointers and Arrays</a>, Up: <a href="Pointers.html" accesskey="u" rel="up">Pointers</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Pointer-Arithmetic.html
===================================================================
--- public/doc/gnu-c/Pointer-Arithmetic.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Pointer-Arithmetic.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,187 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Pointer Arithmetic (GNU C Language Manual)</title>
+
+<meta name="description" content="Pointer Arithmetic (GNU C Language Manual)">
+<meta name="keywords" content="Pointer Arithmetic (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Pointers.html" rel="up" title="Pointers">
+<link href="Pointers-and-Arrays.html" rel="next" title="Pointers and Arrays">
+<link href="Pointer-Comparison.html" rel="prev" title="Pointer Comparison">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Pointer-Arithmetic"></span><div class="header">
+<p>
+Next: <a href="Pointers-and-Arrays.html" accesskey="n" rel="next">Pointers and Arrays</a>, Previous: <a href="Pointer-Comparison.html" accesskey="p" rel="prev">Pointer Comparison</a>, Up: <a href="Pointers.html" accesskey="u" rel="up">Pointers</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>
+</div>
+<hr>
+<span id="Pointer-Arithmetic-1"></span><h3 class="section">14.10 Pointer Arithmetic</h3>
+<span id="index-pointer-arithmetic"></span>
+<span id="index-arithmetic_002c-pointer"></span>
+
+<p>Adding an integer (positive or negative) to a pointer is valid in C.
+It assumes that the pointer points to an element in an array, and
+advances or retracts the pointer across as many array elements as the
+integer specifies.  Here is an example, in which adding a positive
+integer advances the pointer to a later element in the same array.
+</p>
+<div class="example">
+<pre class="example">void
+incrementing_pointers ()
+{
+  int array[5] = { 45, 29, 104, -3, 123456 };
+  int elt0, elt1, elt4;
+
+  int *p = &amp;array[0];
+  /* <span class="roman">Now <code>p</code> points at element 0.  Fetch it.</span>  */
+  elt0 = *p;
+
+  ++p;
+  /* <span class="roman">Now <code>p</code> points at element 1.  Fetch it.</span>  */
+  elt1 = *p;
+
+  p += 3;
+  /* <span class="roman">Now <code>p</code> points at element 4 (the last).  Fetch it.</span>  */
+  elt4 = *p;
+
+  printf (&quot;elt0 %d  elt1 %d  elt4 %d.\n&quot;,
+          elt0, elt1, elt4);
+  /* <span class="roman">Prints elt0 45  elt1 29  elt4 123456.</span>  */
+}
+</pre></div>
+
+<p>Here&rsquo;s an example where adding a negative integer retracts the pointer
+to an earlier element in the same array.
+</p>
+<div class="example">
+<pre class="example">void
+decrementing_pointers ()
+{
+  int array[5] = { 45, 29, 104, -3, 123456 };
+  int elt0, elt3, elt4;
+
+  int *p = &amp;array[4];
+  /* <span class="roman">Now <code>p</code> points at element 4 (the last).  Fetch it.</span>  */
+  elt4 = *p;
+
+  --p;
+  /* <span class="roman">Now <code>p</code> points at element 3.  Fetch it.</span>  */
+  elt3 = *p;
+
+  p -= 3;
+  /* <span class="roman">Now <code>p</code> points at element 0.  Fetch it.</span>  */
+  elt0 = *p;
+
+  printf (&quot;elt0 %d  elt3 %d  elt4 %d.\n&quot;,
+          elt0, elt3, elt4);
+  /* <span class="roman">Prints elt0 45  elt3 -3  elt4 123456.</span>  */
+}
+</pre></div>
+
+<p>If one pointer value was made by adding an integer to another
+pointer value, it should be possible to subtract the pointer values
+and recover that integer.  That works too in C.
+</p>
+<div class="example">
+<pre class="example">void
+subtract_pointers ()
+{
+  int array[5] = { 45, 29, 104, -3, 123456 };
+  int *p0, *p3, *p4;
+
+  int *p = &amp;array[4];
+  /* <span class="roman">Now <code>p</code> points at element 4 (the last).  Save the value.</span>  */
+  p4 = p;
+
+  --p;
+  /* <span class="roman">Now <code>p</code> points at element 3.  Save the value.</span>  */
+  p3 = p;
+
+  p -= 3;
+  /* <span class="roman">Now <code>p</code> points at element 0.  Save the value.</span>  */
+  p0 = p;
+
+  printf (&quot;%d, %d, %d, %d\n&quot;,
+          p4 - p0, p0 - p0, p3 - p0, p0 - p3);
+  /* <span class="roman">Prints 4, 0, 3, -3.</span>  */
+}
+</pre></div>
+
+<p>The addition operation does not know where arrays are.  All it does is
+add the integer (multiplied by object size) to the value of the
+pointer.  When the initial pointer and the result point into a single
+array, the result is well-defined.
+</p>
+<p><strong>Warning:</strong> Only experts should do pointer arithmetic involving pointers
+into different memory objects.
+</p>
+<p>The difference between two pointers has type <code>int</code>, or
+<code>long</code> if necessary (see <a href="Integer-Types.html">Integer Types</a>).  The clean way to
+declare it is to use the typedef name <code>ptrdiff_t</code> defined in the
+file <samp>stddef.h</samp>.
+</p>
+<p>This definition of pointer subtraction is consistent with
+pointer-integer addition, in that <code>(p3 - p1) + p1</code> equals
+<code>p3</code>, as in ordinary algebra.
+</p>
+<p>In standard C, addition and subtraction are not allowed on <code>void
+*</code>, since the target type&rsquo;s size is not defined in that case.
+Likewise, they are not allowed on pointers to function types.
+However, these operations work in GNU C, and the &ldquo;size of the target
+type&rdquo; is taken as 1.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Pointers-and-Arrays.html" accesskey="n" rel="next">Pointers and Arrays</a>, Previous: <a href="Pointer-Comparison.html" accesskey="p" rel="prev">Pointer Comparison</a>, Up: <a href="Pointers.html" accesskey="u" rel="up">Pointers</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Pointer-Comparison.html
===================================================================
--- public/doc/gnu-c/Pointer-Comparison.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Pointer-Comparison.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,109 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Pointer Comparison (GNU C Language Manual)</title>
+
+<meta name="description" content="Pointer Comparison (GNU C Language Manual)">
+<meta name="keywords" content="Pointer Comparison (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Pointers.html" rel="up" title="Pointers">
+<link href="Pointer-Arithmetic.html" rel="next" title="Pointer Arithmetic">
+<link href="Void-Pointers.html" rel="prev" title="Void Pointers">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Pointer-Comparison"></span><div class="header">
+<p>
+Next: <a href="Pointer-Arithmetic.html" accesskey="n" rel="next">Pointer Arithmetic</a>, Previous: <a href="Void-Pointers.html" accesskey="p" rel="prev">Void Pointers</a>, Up: <a href="Pointers.html" accesskey="u" rel="up">Pointers</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>
+</div>
+<hr>
+<span id="Pointer-Comparison-1"></span><h3 class="section">14.9 Pointer Comparison</h3>
+<span id="index-pointer-comparison"></span>
+<span id="index-comparison_002c-pointer"></span>
+
+<p>Two pointer values are equal if they point to the same location, or if
+they are both null.  You can test for this with <code>==</code> and
+<code>!=</code>.  Here&rsquo;s a trivial example:
+</p>
+<div class="example">
+<pre class="example">{
+  int i;
+  int *p, *q;
+
+  p = &amp;i;
+  q = &amp;i;
+  if (p == q)
+    printf (&quot;This will be printed.\n&quot;);
+  if (p != q)
+    printf (&quot;This won't be printed.\n&quot;);
+}
+</pre></div>
+
+<p>Ordering comparisons such as <code>&gt;</code> and <code>&gt;=</code> operate on
+pointers by converting them to unsigned integers.  The C standard says
+the two pointers must point within the same object in memory, but on
+GNU/Linux systems these operations simply compare the numeric values
+of the pointers.
+</p>
+<p>The pointer values to be compared should in principle have the same type, but
+they are allowed to differ in limited cases.  First of all, if the two
+pointers&rsquo; target types are nearly compatible (see <a href="Compatible-Types.html">Compatible Types</a>), the comparison is allowed.
+</p>
+<p>If one of the operands is <code>void *</code> (see <a href="Void-Pointers.html">Void Pointers</a>) and
+the other is another pointer type, the comparison operator converts
+the <code>void *</code> pointer to the other type so as to compare them.
+(In standard C, this is not allowed if the other type is a function
+pointer type, but that works in GNU C.)
+</p>
+<p>Comparison operators also allow comparing the integer 0 with a pointer
+value.  Thus works by converting 0 to a null pointer of the same type
+as the other operand.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Pointer-Declarations.html
===================================================================
--- public/doc/gnu-c/Pointer-Declarations.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Pointer-Declarations.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,104 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Pointer Declarations (GNU C Language Manual)</title>
+
+<meta name="description" content="Pointer Declarations (GNU C Language Manual)">
+<meta name="keywords" content="Pointer Declarations (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Pointers.html" rel="up" title="Pointers">
+<link href="Pointer-Type-Designators.html" rel="next" title="Pointer Type Designators">
+<link href="Pointer-Types.html" rel="prev" title="Pointer Types">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Pointer-Declarations"></span><div class="header">
+<p>
+Next: <a href="Pointer-Type-Designators.html" accesskey="n" rel="next">Pointer Type Designators</a>, Previous: <a href="Pointer-Types.html" accesskey="p" rel="prev">Pointer Types</a>, Up: <a href="Pointers.html" accesskey="u" rel="up">Pointers</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>
+</div>
+<hr>
+<span id="Pointer_002dVariable-Declarations"></span><h3 class="section">14.3 Pointer-Variable Declarations</h3>
+
+<p>The way to declare that a variable <code>foo</code> points to type <var>t</var> is
+</p>
+<div class="example">
+<pre class="example"><var>t</var> *foo;
+</pre></div>
+
+<p>To remember this syntax, think &ldquo;if you dereference <code>foo</code>, using
+the &lsquo;<samp>*</samp>&rsquo; operator, what you get is type <var>t</var>.  Thus, <code>foo</code>
+points to type <var>t</var>.&rdquo;
+</p>
+<p>Thus, we can declare variables that hold pointers to these three
+types, like this:
+</p>
+<div class="example">
+<pre class="example">int *ptri;            /* <span class="roman">Pointer to <code>int</code>.</span> */
+double *ptrd;         /* <span class="roman">Pointer to <code>double</code>.</span> */
+double (*ptrda)[5];   /* <span class="roman">Pointer to <code>double[5]</code>.</span> */
+</pre></div>
+
+<p>&lsquo;<samp>int *ptri;</samp>&rsquo; means, &ldquo;if you dereference <code>ptri</code>, you get an
+<code>int</code>.&rdquo;  &lsquo;<samp>double (*ptrda)[5];</samp>&rsquo; means, &ldquo;if you dereference
+<code>ptrda</code>, then subscript it by an integer less than 5, you get a
+<code>double</code>.&rdquo;  The parentheses express the point that you would
+dereference it first, then subscript it.
+</p>
+<p>Contrast the last one with this:
+</p>
+<div class="example">
+<pre class="example">double *aptrd[5];     /* <span class="roman">Array of five pointers to <code>double</code>.</span> */
+</pre></div>
+
+<p>Because &lsquo;<samp>*</samp>&rsquo; has higher syntactic precedence than subscripting,
+you would subscript <code>aptrd</code> then dereference it.  Therefore, it
+declares an array of pointers, not a pointer.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Pointer-Dereference.html
===================================================================
--- public/doc/gnu-c/Pointer-Dereference.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Pointer-Dereference.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,106 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Pointer Dereference (GNU C Language Manual)</title>
+
+<meta name="description" content="Pointer Dereference (GNU C Language Manual)">
+<meta name="keywords" content="Pointer Dereference (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Pointers.html" rel="up" title="Pointers">
+<link href="Null-Pointers.html" rel="next" title="Null Pointers">
+<link href="Pointer-Type-Designators.html" rel="prev" title="Pointer Type Designators">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Pointer-Dereference"></span><div class="header">
+<p>
+Next: <a href="Null-Pointers.html" accesskey="n" rel="next">Null Pointers</a>, Previous: <a href="Pointer-Type-Designators.html" accesskey="p" rel="prev">Pointer Type Designators</a>, Up: <a href="Pointers.html" accesskey="u" rel="up">Pointers</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>
+</div>
+<hr>
+<span id="Dereferencing-Pointers"></span><h3 class="section">14.5 Dereferencing Pointers</h3>
+<span id="index-dereferencing-pointers"></span>
+<span id="index-pointer-dereferencing"></span>
+
+<p>The main use of a pointer value is to <em>dereference it</em> (access the
+data it points at) with the unary &lsquo;<samp>*</samp>&rsquo; operator.  For instance,
+<code>*&amp;i</code> is the value at <code>i</code>&rsquo;s address&mdash;which is just
+<code>i</code>.  The two expressions are equivalent, provided <code>&amp;i</code> is
+valid.
+</p>
+<p>A pointer-dereference expression whose type is data (not a function)
+is an lvalue.
+</p>
+<p>Pointers become really useful when we store them somewhere and use
+them later.  Here&rsquo;s a simple example to illustrate the practice:
+</p>
+<div class="example">
+<pre class="example">{
+  int i;
+  int *ptr;
+
+  ptr = &amp;i;
+
+  i = 5;
+
+  <span class="roman">&hellip;</span>
+  
+  return *ptr;   /* <span class="roman">Returns 5, fetched from <code>i</code>.</span>  */
+}
+</pre></div>
+
+<p>This shows how to declare the variable <code>ptr</code> as type
+<code>int *</code> (pointer to <code>int</code>), store a pointer value into it
+(pointing at <code>i</code>), and use it later to get the value of the
+object it points at (the value in <code>i</code>).
+</p>
+<p>If anyone can provide a useful example which is this basic,
+I would be grateful.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Pointer-Increment_002fDecrement.html
===================================================================
--- public/doc/gnu-c/Pointer-Increment_002fDecrement.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Pointer-Increment_002fDecrement.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,179 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Pointer Increment/Decrement (GNU C Language Manual)</title>
+
+<meta name="description" content="Pointer Increment/Decrement (GNU C Language Manual)">
+<meta name="keywords" content="Pointer Increment/Decrement (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Pointers.html" rel="up" title="Pointers">
+<link href="Pointer-Arithmetic-Drawbacks.html" rel="next" title="Pointer Arithmetic Drawbacks">
+<link href="Pointer-Arithmetic-Low-Level.html" rel="prev" title="Pointer Arithmetic Low Level">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Pointer-Increment_002fDecrement"></span><div class="header">
+<p>
+Next: <a href="Pointer-Arithmetic-Drawbacks.html" accesskey="n" rel="next">Pointer Arithmetic Drawbacks</a>, Previous: <a href="Pointer-Arithmetic-Low-Level.html" accesskey="p" rel="prev">Pointer Arithmetic Low Level</a>, Up: <a href="Pointers.html" accesskey="u" rel="up">Pointers</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>
+</div>
+<hr>
+<span id="Pointer-Increment-and-Decrement"></span><h3 class="section">14.13 Pointer Increment and Decrement</h3>
+<span id="index-pointer-increment-and-decrement"></span>
+<span id="index-incrementing-pointers"></span>
+<span id="index-decrementing-pointers"></span>
+
+<p>The &lsquo;<samp>++</samp>&rsquo; operator adds 1 to a variable.  We have seen it for
+integers (see <a href="Increment_002fDecrement.html">Increment/Decrement</a>), but it works for pointers too.
+For instance, suppose we have a series of positive integers,
+terminated by a zero, and we want to add them all up.
+</p>
+<div class="example">
+<pre class="example">int
+sum_array_till_0 (int *p)
+{
+  int sum = 0;
+
+  for (;;)
+    {
+      /* <span class="roman">Fetch the next integer.</span>  */
+      int next = *p++;
+      /* <span class="roman">Exit the loop if it&rsquo;s 0.</span>  */
+      if (next == 0)
+        break;
+      /* <span class="roman">Add it into running total.</span>  */
+      sum += next;
+    }
+
+  return sum;
+}
+</pre></div>
+
+<p>The statement &lsquo;<samp>break;</samp>&rsquo; will be explained further on (see <a href="break-Statement.html">break Statement</a>).  Used in this way, it immediately exits the surrounding
+<code>for</code> statement.
+</p>
+<p><code>*p++</code> parses as <code>*(p++)</code>, because a postfix operator always
+takes precedence over a prefix operator.  Therefore, it dereferences
+<code>p</code>, and increments <code>p</code> afterwards.  Incrementing a variable
+means adding 1 to it, as in <code>p = p + 1</code>.  Since <code>p</code> is a
+pointer, adding 1 to it advances it by the width of the datum it
+points to&mdash;in this case, one <code>int</code>.  Therefore, each iteration
+of the loop picks up the next integer from the series and puts it into
+<code>next</code>.
+</p>
+<p>This <code>for</code>-loop has no initialization expression since <code>p</code>
+and <code>sum</code> are already initialized, it has no end-test since the
+&lsquo;<samp>break;</samp>&rsquo; statement will exit it, and needs no expression to
+advance it since that&rsquo;s done within the loop by incrementing <code>p</code>
+and <code>sum</code>.  Thus, those three expressions after <code>for</code> are
+left empty.
+</p>
+<p>Another way to write this function is by keeping the parameter value unchanged
+and using indexing to access the integers in the table.
+</p>
+<div class="example">
+<pre class="example">int
+sum_array_till_0_indexing (int *p)
+{
+  int i;
+  int sum = 0;
+
+  for (i = 0; ; i++)
+    {
+      /* <span class="roman">Fetch the next integer.</span>  */
+      int next = p[i];
+      /* <span class="roman">Exit the loop if it&rsquo;s 0.</span>  */
+      if (next == 0)
+        break;
+      /* <span class="roman">Add it into running total.</span>  */
+      sum += next;
+    }
+
+  return sum;
+}
+</pre></div>
+
+<p>In this program, instead of advancing <code>p</code>, we advance <code>i</code>
+and add it to <code>p</code>.  (Recall that <code>p[i]</code> means <code>*(p +
+i)</code>.)  Either way, it uses the same address to get the next integer.
+</p>
+<p>It makes no difference in this program whether we write <code>i++</code> or
+<code>++i</code>, because the value is not used.  All that matters is the
+effect, to increment <code>i</code>.
+</p>
+<p>The &lsquo;<samp>--</samp>&rsquo; operator also works on pointers; it can be used
+to scan backwards through an array, like this:
+</p>
+<div class="example">
+<pre class="example">int
+after_last_nonzero (int *p, int len)
+{
+  /* <span class="roman">Set up <code>q</code> to point just after the last array element.</span>  */
+  int *q = p + len;
+
+  while (q != p)
+    /* <span class="roman">Step <code>q</code> back until it reaches a nonzero element.</span>  */
+    if (*--q != 0)
+      /* <span class="roman">Return the index of the element after that nonzero.</span>  */
+      return q - p + 1;
+
+  return 0;
+}
+</pre></div>
+
+<p>That function returns the length of the nonzero part of the
+array specified by its arguments; that is, the index of the
+first zero of the run of zeros at the end.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Pointer-Arithmetic-Drawbacks.html" accesskey="n" rel="next">Pointer Arithmetic Drawbacks</a>, Previous: <a href="Pointer-Arithmetic-Low-Level.html" accesskey="p" rel="prev">Pointer Arithmetic Low Level</a>, Up: <a href="Pointers.html" accesskey="u" rel="up">Pointers</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Pointer-Type-Designators.html
===================================================================
--- public/doc/gnu-c/Pointer-Type-Designators.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Pointer-Type-Designators.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,85 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Pointer Type Designators (GNU C Language Manual)</title>
+
+<meta name="description" content="Pointer Type Designators (GNU C Language Manual)">
+<meta name="keywords" content="Pointer Type Designators (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Pointers.html" rel="up" title="Pointers">
+<link href="Pointer-Dereference.html" rel="next" title="Pointer Dereference">
+<link href="Pointer-Declarations.html" rel="prev" title="Pointer Declarations">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Pointer-Type-Designators"></span><div class="header">
+<p>
+Next: <a href="Pointer-Dereference.html" accesskey="n" rel="next">Pointer Dereference</a>, Previous: <a href="Pointer-Declarations.html" accesskey="p" rel="prev">Pointer Declarations</a>, Up: <a href="Pointers.html" accesskey="u" rel="up">Pointers</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>
+</div>
+<hr>
+<span id="Pointer_002dType-Designators"></span><h3 class="section">14.4 Pointer-Type Designators</h3>
+
+<p>Every type in C has a designator; you make it by deleting the variable
+name and the semicolon from a declaration (see <a href="Type-Designators.html">Type Designators</a>).  Here are the designators for the pointer
+types of the example declarations in the previous section:
+</p>
+<div class="example">
+<pre class="example">int *           /* <span class="roman">Pointer to <code>int</code>.</span> */
+double *        /* <span class="roman">Pointer to <code>double</code>.</span> */
+double (*)[5]   /* <span class="roman">Pointer to <code>double[5]</code>.</span> */
+</pre></div>
+
+<p>Remember, to understand what type a designator stands for, imagine the
+variable name that would be in the declaration, and figure out what
+type it would declare that variable with.  <code>double (*)[5]</code> can
+only come from <code>double (*<var>variable</var>)[5]</code>, so it&rsquo;s a pointer
+which, when dereferenced, gives an array of 5 <code>double</code>s.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Pointer-Types.html
===================================================================
--- public/doc/gnu-c/Pointer-Types.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Pointer-Types.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,88 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Pointer Types (GNU C Language Manual)</title>
+
+<meta name="description" content="Pointer Types (GNU C Language Manual)">
+<meta name="keywords" content="Pointer Types (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Pointers.html" rel="up" title="Pointers">
+<link href="Pointer-Declarations.html" rel="next" title="Pointer Declarations">
+<link href="Address-of-Data.html" rel="prev" title="Address of Data">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Pointer-Types"></span><div class="header">
+<p>
+Next: <a href="Pointer-Declarations.html" accesskey="n" rel="next">Pointer Declarations</a>, Previous: <a href="Address-of-Data.html" accesskey="p" rel="prev">Address of Data</a>, Up: <a href="Pointers.html" accesskey="u" rel="up">Pointers</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>
+</div>
+<hr>
+<span id="Pointer-Types-1"></span><h3 class="section">14.2 Pointer Types</h3>
+
+<p>For each data type <var>t</var>, there is a type for pointers to type
+<var>t</var>.  For these variables,
+</p>
+<div class="example">
+<pre class="example">int i;
+double a[5];
+</pre></div>
+
+<ul>
+<li> <code>i</code> has type <code>int</code>; we say
+<code>&amp;i</code> is a &ldquo;pointer to <code>int</code>.&rdquo;
+
+</li><li> <code>a</code> has type <code>double[5]</code>; we say <code>&amp;a</code> is a &ldquo;pointer to
+arrays of five <code>double</code>s.&rdquo;
+
+</li><li> <code>a[3]</code> has type <code>double</code>; we say <code>&amp;a[3]</code> is a &ldquo;pointer
+to <code>double</code>.&rdquo;
+</li></ul>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Pointer_002dInteger-Conversion.html
===================================================================
--- public/doc/gnu-c/Pointer_002dInteger-Conversion.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Pointer_002dInteger-Conversion.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,104 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Pointer-Integer Conversion (GNU C Language Manual)</title>
+
+<meta name="description" content="Pointer-Integer Conversion (GNU C Language Manual)">
+<meta name="keywords" content="Pointer-Integer Conversion (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Pointers.html" rel="up" title="Pointers">
+<link href="Printing-Pointers.html" rel="next" title="Printing Pointers">
+<link href="Pointer-Arithmetic-Drawbacks.html" rel="prev" title="Pointer Arithmetic Drawbacks">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Pointer_002dInteger-Conversion"></span><div class="header">
+<p>
+Next: <a href="Printing-Pointers.html" accesskey="n" rel="next">Printing Pointers</a>, Previous: <a href="Pointer-Arithmetic-Drawbacks.html" accesskey="p" rel="prev">Pointer Arithmetic Drawbacks</a>, Up: <a href="Pointers.html" accesskey="u" rel="up">Pointers</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>
+</div>
+<hr>
+<span id="Pointer_002dInteger-Conversion-1"></span><h3 class="section">14.15 Pointer-Integer Conversion</h3>
+<span id="index-pointer_002dinteger-conversion"></span>
+<span id="index-conversion-between-pointers-and-integers"></span>
+<span id="index-uintptr_005ft"></span>
+
+<p>On modern computers, an address is simply a number.  It occupies the
+same space as some size of integer.  In C, you can convert a pointer
+to the appropriate integer types and vice versa, without losing
+information.  The appropriate integer types are <code>uintptr_t</code> (an
+unsigned type) and <code>intptr_t</code> (a signed type).  Both are defined
+in <samp>stdint.h</samp>.
+</p>
+<p>For instance,
+</p>
+<div class="example">
+<pre class="example">#include &lt;stdint.h&gt;
+#include &lt;stdio.h&gt;
+
+void
+print_pointer (void *ptr)
+{
+  uintptr_t converted = (uintptr_t) ptr;
+
+  printf (&quot;Pointer value is 0x%x\n&quot;,
+          (unsigned int) converted);
+}
+</pre></div>
+
+<p>The specification &lsquo;<samp>%x</samp>&rsquo; in the template (the first argument) for
+<code>printf</code> means to represent this argument using hexadecimal
+notation.  It&rsquo;s cleaner to use <code>uintptr_t</code>, since hexadecimal
+printing treats the number as unsigned, but it won&rsquo;t actually matter:
+all <code>printf</code> gets to see is the series of bits in the number.
+</p>
+<p><strong>Warning:</strong> Converting pointers to integers is risky&mdash;don&rsquo;t do
+it unless it is really necessary.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Pointers-and-Arrays.html
===================================================================
--- public/doc/gnu-c/Pointers-and-Arrays.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Pointers-and-Arrays.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,108 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Pointers and Arrays (GNU C Language Manual)</title>
+
+<meta name="description" content="Pointers and Arrays (GNU C Language Manual)">
+<meta name="keywords" content="Pointers and Arrays (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Pointers.html" rel="up" title="Pointers">
+<link href="Pointer-Arithmetic-Low-Level.html" rel="next" title="Pointer Arithmetic Low Level">
+<link href="Pointer-Arithmetic.html" rel="prev" title="Pointer Arithmetic">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Pointers-and-Arrays"></span><div class="header">
+<p>
+Next: <a href="Pointer-Arithmetic-Low-Level.html" accesskey="n" rel="next">Pointer Arithmetic Low Level</a>, Previous: <a href="Pointer-Arithmetic.html" accesskey="p" rel="prev">Pointer Arithmetic</a>, Up: <a href="Pointers.html" accesskey="u" rel="up">Pointers</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>
+</div>
+<hr>
+<span id="Pointers-and-Arrays-1"></span><h3 class="section">14.11 Pointers and Arrays</h3>
+<span id="index-pointers-and-arrays"></span>
+<span id="index-arrays-and-pointers"></span>
+
+<p>The clean way to refer to an array element is
+<code><var>array</var>[<var>index</var>]</code>.  Another, complicated way to do the
+same job is to get the address of that element as a pointer, then
+dereference it: <code>* (&amp;<var>array</var>[0] + <var>index</var>)</code> (or
+equivalently <code>* (<var>array</var> + <var>index</var>)</code>).  This first gets a
+pointer to element zero, then increments it with <code>+</code> to point to
+the desired element, then gets the value from there.
+</p>
+<p>That pointer-arithmetic construct is the <em>definition</em> of square
+brackets in C.  <code><var>a</var>[<var>b</var>]</code> means, by definition,
+<code>*(<var>a</var> + <var>b</var>)</code>.  This definition uses <var>a</var> and <var>b</var>
+symmetrically, so one must be a pointer and the other an integer; it
+does not matter which comes first.
+</p>
+<p>Since indexing with square brackets is defined in terms of addition
+and dereference, that too is symmetrical.  Thus, you can write
+<code>3[array]</code> and it is equivalent to <code>array[3]</code>.  However, it
+would be foolish to write <code>3[array]</code>, since it has no advantage
+and could confuse people who read the code.
+</p>
+<p>It may seem like a discrepancy that the definition <code>*(<var>a</var> +
+<var>b</var>)</code> requires a pointer, but <code>array[3]</code> uses an array value
+instead.  Why is this valid?  The name of the array, when used by
+itself as an expression (other than in <code>sizeof</code>), stands for a
+pointer to the arrays&rsquo;s zeroth element.  Thus, <code>array + 3</code>
+converts <code>array</code> implicitly to <code>&amp;array[0]</code>, and the result
+is a pointer to element 3, equivalent to <code>&amp;array[3]</code>.
+</p>
+<p>Since square brackets are defined in terms of such addition,
+<code>array[3]</code> first converts <code>array</code> to a pointer.  That&rsquo;s why
+it works to use an array directly in that construct.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Pointer-Arithmetic-Low-Level.html" accesskey="n" rel="next">Pointer Arithmetic Low Level</a>, Previous: <a href="Pointer-Arithmetic.html" accesskey="p" rel="prev">Pointer Arithmetic</a>, Up: <a href="Pointers.html" accesskey="u" rel="up">Pointers</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Pointers.html
===================================================================
--- public/doc/gnu-c/Pointers.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Pointers.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,120 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Pointers (GNU C Language Manual)</title>
+
+<meta name="description" content="Pointers (GNU C Language Manual)">
+<meta name="keywords" content="Pointers (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html" rel="up" title="Top">
+<link href="Address-of-Data.html" rel="next" title="Address of Data">
+<link href="Type-Size.html" rel="prev" title="Type Size">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Pointers"></span><div class="header">
+<p>
+Next: <a href="Structures.html" accesskey="n" rel="next">Structures</a>, Previous: <a href="Type-Size.html" accesskey="p" rel="prev">Type Size</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</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>
+</div>
+<hr>
+<span id="Pointers-1"></span><h2 class="chapter">14 Pointers</h2>
+<span id="index-pointers"></span>
+
+<p>Among high-level languages, C is rather low level, close to the
+machine.  This is mainly because it has explicit <em>pointers</em>.  A
+pointer value is the numeric address of data in memory.  The type of
+data to be found at that address is specified by the data type of the
+pointer itself.  The unary operator &lsquo;<samp>*</samp>&rsquo; gets the data that a
+pointer points to&mdash;this is called <em>dereferencing the pointer</em>.
+</p>
+<p>C also allows pointers to functions, but since there are some
+differences in how they work, we treat them later.  See <a href="Function-Pointers.html">Function Pointers</a>.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Address-of-Data.html" accesskey="1">Address of Data</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Using the &ldquo;address-of&rdquo; operator.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Pointer-Types.html" accesskey="2">Pointer Types</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">For each type, there is a pointer type.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Pointer-Declarations.html" accesskey="3">Pointer Declarations</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Declaring variables with pointer types.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Pointer-Type-Designators.html" accesskey="4">Pointer Type Designators</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Designators for pointer types.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Pointer-Dereference.html" accesskey="5">Pointer Dereference</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Accessing what a pointer points at.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Null-Pointers.html" accesskey="6">Null Pointers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Pointers which do not point to any object.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Invalid-Dereference.html" accesskey="7">Invalid Dereference</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Dereferencing null or invalid pointers.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Void-Pointers.html" accesskey="8">Void Pointers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Totally generic pointers, can cast to any.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Pointer-Comparison.html" accesskey="9">Pointer Comparison</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Comparing memory address values.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Pointer-Arithmetic.html">Pointer Arithmetic</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Computing memory address values.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Pointers-and-Arrays.html">Pointers and Arrays</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Using pointer syntax instead of array syntax.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Pointer-Arithmetic-Low-Level.html">Pointer Arithmetic Low Level</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">More about computing memory address values.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Pointer-Increment_002fDecrement.html">Pointer Increment/Decrement</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Incrementing and decrementing pointers.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Pointer-Arithmetic-Drawbacks.html">Pointer Arithmetic Drawbacks</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">A common pointer bug to watch out for.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Pointer_002dInteger-Conversion.html">Pointer-Integer Conversion</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Converting pointer types to integer types.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Printing-Pointers.html">Printing Pointers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Using <code>printf</code> for a pointer&rsquo;s value.
+</td></tr>
+</table>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Structures.html" accesskey="n" rel="next">Structures</a>, Previous: <a href="Type-Size.html" accesskey="p" rel="prev">Type Size</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Postincrement-and-Ordering.html
===================================================================
--- public/doc/gnu-c/Postincrement-and-Ordering.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Postincrement-and-Ordering.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,98 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Postincrement and Ordering (GNU C Language Manual)</title>
+
+<meta name="description" content="Postincrement and Ordering (GNU C Language Manual)">
+<meta name="keywords" content="Postincrement and Ordering (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Order-of-Execution.html" rel="up" title="Order of Execution">
+<link href="Ordering-of-Operands.html" rel="next" title="Ordering of Operands">
+<link href="Sequence-Points.html" rel="prev" title="Sequence Points">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Postincrement-and-Ordering"></span><div class="header">
+<p>
+Next: <a href="Ordering-of-Operands.html" accesskey="n" rel="next">Ordering of Operands</a>, Previous: <a href="Sequence-Points.html" accesskey="p" rel="prev">Sequence Points</a>, Up: <a href="Order-of-Execution.html" accesskey="u" rel="up">Order of Execution</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>
+</div>
+<hr>
+<span id="Postincrement-and-Ordering-1"></span><h3 class="section">10.4 Postincrement and Ordering</h3>
+<span id="index-postincrement-and-ordering"></span>
+<span id="index-ordering-and-postincrement"></span>
+
+<p>Ordering requirements are loose with the postincrement and
+postdecrement operations (see <a href="Postincrement_002fPostdecrement.html">Postincrement/Postdecrement</a>), which
+specify side effects to happen &ldquo;a little later.&rdquo;  They must happen
+before the next sequence point, but that still leaves room for various
+meanings.  In this expression,
+</p>
+<div class="example">
+<pre class="example">z = x++ - foo ()
+</pre></div>
+
+<p>it&rsquo;s unpredictable whether <code>x</code> gets incremented before or after
+calling the function <code>foo</code>.  If <code>foo</code> refers to <code>x</code>,
+it might see the old value or it might see the incremented value.
+</p>
+<p>In this perverse expression,
+</p>
+<div class="example">
+<pre class="example">x = x++
+</pre></div>
+
+<p><code>x</code> will certainly be incremented but the incremented value may
+not stick.  If the incrementation of <code>x</code> happens after the
+assignment to <code>x</code>, the incremented value will remain in place.
+But if the incrementation happens first, the assignment will overwrite
+that with the not-yet-incremented value, so the expression as a whole
+will leave <code>x</code> unchanged.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Postincrement_002fPostdecrement.html
===================================================================
--- public/doc/gnu-c/Postincrement_002fPostdecrement.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Postincrement_002fPostdecrement.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,114 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Postincrement/Postdecrement (GNU C Language Manual)</title>
+
+<meta name="description" content="Postincrement/Postdecrement (GNU C Language Manual)">
+<meta name="keywords" content="Postincrement/Postdecrement (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Assignment-Expressions.html" rel="up" title="Assignment Expressions">
+<link href="Assignment-in-Subexpressions.html" rel="next" title="Assignment in Subexpressions">
+<link href="Increment_002fDecrement.html" rel="prev" title="Increment/Decrement">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Postincrement_002fPostdecrement"></span><div class="header">
+<p>
+Next: <a href="Assignment-in-Subexpressions.html" accesskey="n" rel="next">Assignment in Subexpressions</a>, Previous: <a href="Increment_002fDecrement.html" accesskey="p" rel="prev">Increment/Decrement</a>, Up: <a href="Assignment-Expressions.html" accesskey="u" rel="up">Assignment Expressions</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>
+</div>
+<hr>
+<span id="Postincrement-and-Postdecrement"></span><h3 class="section">7.5 Postincrement and Postdecrement</h3>
+<span id="index-postincrement-expression"></span>
+<span id="index-postdecrement-expression"></span>
+<span id="index-operator_002c-postincrement"></span>
+<span id="index-operator_002c-postdecrement"></span>
+
+<p>Using &lsquo;<samp>++</samp>&rsquo; or &lsquo;<samp>--</samp>&rsquo; <em>after</em> an lvalue does something
+peculiar: it gets the value directly out of the lvalue and <em>then</em>
+increments or decrement it.  Thus, the value of <code>i++</code> is the same
+as the value of <code>i</code>, but <code>i++</code> also increments <code>i</code> &ldquo;a
+little later.&rdquo;  This is called <em>postincrement</em> or
+<em>postdecrement</em>.
+</p>
+<p>For example,
+</p>
+<div class="example">
+<pre class="example">#include &lt;stdio.h&gt;   /* <span class="roman">Declares <code>printf</code>.</span> */
+
+int
+main (void)
+{
+  int i = 5;
+  printf (&quot;%d\n&quot;, i);
+  printf (&quot;%d\n&quot;, i++);
+  printf (&quot;%d\n&quot;, i);
+  return 0;
+}
+</pre></div>
+
+<p>prints lines containing 5, again 5, and 6.  The expression <code>i++</code>
+has the value 5, which is the value of <code>i</code> at the time,
+but it increments <code>i</code> from 5 to 6 just a little later.
+</p>
+<p>How much later is &ldquo;just a little later&rdquo;?  That is flexible.  The
+increment has to happen by the next <em>sequence point</em>.  In simple cases,
+that means by the end of the statement.  See <a href="Sequence-Points.html">Sequence Points</a>.
+</p>
+<p>If a unary operator precedes a postincrement or postincrement expression,
+the increment nests inside:
+</p>
+<div class="example">
+<pre class="example">-a++   <span class="roman">is equivalent to</span>   -(a++)
+</pre></div>
+
+<p>That&rsquo;s the only order that makes sense; <code>-a</code> is not an lvalue, so
+it can&rsquo;t be incremented.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Pragma-Basics.html
===================================================================
--- public/doc/gnu-c/Pragma-Basics.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Pragma-Basics.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,198 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Pragma Basics (GNU C Language Manual)</title>
+
+<meta name="description" content="Pragma Basics (GNU C Language Manual)">
+<meta name="keywords" content="Pragma Basics (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Pragmas.html" rel="up" title="Pragmas">
+<link href="Severity-Pragmas.html" rel="next" title="Severity Pragmas">
+<link href="Pragmas.html" rel="prev" title="Pragmas">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Pragma-Basics"></span><div class="header">
+<p>
+Next: <a href="Severity-Pragmas.html" accesskey="n" rel="next">Severity Pragmas</a>, Up: <a href="Pragmas.html" accesskey="u" rel="up">Pragmas</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>
+</div>
+<hr>
+<span id="Pragma-Basics-1"></span><h4 class="subsection">30.1.1 Pragma Basics</h4>
+
+<p>C defines two syntactical forms for pragmas, the line form and the
+token form.  You can write any pragma in either form, with the same
+meaning.
+</p>
+<p>The line form is a line in the source code, like this:
+</p>
+<div class="example">
+<pre class="example">#pragma <var>line</var>
+</pre></div>
+
+<p>The line pragma has no effect on the parsing of the lines around it.
+This form has the drawback that it can&rsquo;t be generated by a macro expansion.
+</p>
+<p>The token form is a series of tokens; it can appear anywhere in the
+program between the other tokens.
+</p>
+<div class="example">
+<pre class="example">_Pragma (<var>stringconstant</var>)
+</pre></div>
+
+<p>The pragma has no effect on the syntax of the tokens that surround it;
+thus, here&rsquo;s a pragma in the middle of an <code>if</code> statement:
+</p>
+<div class="example">
+<pre class="example">if _Pragma (&quot;hello&quot;) (x &gt; 1)
+</pre></div>
+
+<p>However, that&rsquo;s an unclear thing to do; for the sake of
+understandability, it is better to put a pragma on a line by itself
+and not embedded in the middle of another construct.
+</p>
+<p>Both forms of pragma have a textual argument.  In a line pragma, the
+text is the rest of the line.  The textual argument to <code>_Pragma</code>
+uses the same syntax as a C string constant: surround the text with
+two &lsquo;<samp>&quot;</samp>&rsquo; characters, and add a backslash before each &lsquo;<samp>&quot;</samp>&rsquo; or
+&lsquo;<samp>\</samp>&rsquo; character in it.
+</p>
+<p>With either syntax, the textual argument specifies what to do.
+It begins with one or several words that specify the operation.
+If the compiler does not recognize them, it ignores the pragma.
+</p>
+<p>Here are the pragma operations supported in GNU C.
+</p>
+<dl compact="compact">
+<dt><code>#pragma GCC dependency &quot;<var>file</var>&quot; [<var>message</var>]</code></dt>
+<dt><code>_Pragma (&quot;GCC dependency \&quot;<var>file</var>\&quot; [<var>message</var>]&quot;)</code></dt>
+<dd><p>Declares that the current source file depends on <var>file</var>, so GNU C
+compares the file times and gives a warning if <var>file</var> is newer
+than the current source file.
+</p>
+<p>This directive searches for <var>file</var> the way <code>#include</code>
+searches for a non-system header file.
+</p>
+<p>If <var>message</var> is given, the warning message includes that text.
+</p>
+<p>Examples:
+</p>
+<div class="example">
+<pre class="example">#pragma GCC dependency &quot;parse.y&quot;
+_pragma (&quot;GCC dependency \&quot;/usr/include/time.h\&quot; \
+rerun fixincludes&quot;)
+</pre></div>
+
+</dd>
+<dt><code>#pragma GCC poison <var>identifiers</var></code></dt>
+<dt><code>_Pragma (&quot;GCC poison <var>identifiers</var>&quot;)</code></dt>
+<dd><p>Poisons the identifiers listed in <var>identifiers</var>.
+</p>
+<p>This is useful to make sure all mention of <var>identifiers</var> has been
+deleted from the program and that no reference to them creeps back in.
+If any of those identifiers appears anywhere in the source after the
+directive, it causes a compilation error.  For example,
+</p>
+<div class="example">
+<pre class="example">#pragma GCC poison printf sprintf fprintf
+sprintf(some_string, &quot;hello&quot;);
+</pre></div>
+
+<p>generates an error.
+</p>
+<p>If a poisoned identifier appears as part of the expansion of a macro
+that was defined before the identifier was poisoned, it will <em>not</em>
+cause an error.  Thus, system headers that define macros that use
+the identifier will not cause errors.
+</p>
+<p>For example,
+</p>
+<div class="example">
+<pre class="example">#define strrchr rindex
+_Pragma (&quot;GCC poison rindex&quot;)
+strrchr(some_string, 'h');
+</pre></div>
+
+<p>does not cause a compilation error.
+</p>
+</dd>
+<dt><code>#pragma GCC system_header</code></dt>
+<dt><code>_Pragma (&quot;GCC system_header&quot;)</code></dt>
+<dd><p>Specify treating the rest of the current source file as if it came
+from a system header file.  See <a href="https://gcc.gnu.org/onlinedocs/gcc/System-Headers.html#System-Headers">System Headers</a> in <cite>Using the GNU Compiler Collection</cite>.
+</p>
+</dd>
+<dt><code>#pragma GCC warning <var>message</var></code></dt>
+<dt><code>_Pragma (&quot;GCC warning <var>message</var>&quot;)</code></dt>
+<dd><p>Equivalent to <code>#warning</code>.  Its advantage is that the
+<code>_Pragma</code> form can be included in a macro definition.
+</p>
+</dd>
+<dt><code>#pragma GCC error <var>message</var></code></dt>
+<dt><code>_Pragma (&quot;GCC error <var>message</var>&quot;)</code></dt>
+<dd><p>Equivalent to <code>#error</code>.  Its advantage is that the
+<code>_Pragma</code> form can be included in a macro definition.
+</p>
+</dd>
+<dt><code>#pragma GCC message <var>message</var></code></dt>
+<dt><code>_Pragma (&quot;GCC message <var>message</var>&quot;)</code></dt>
+<dd><p>Similar to &lsquo;<samp>GCC warning</samp>&rsquo; and &lsquo;<samp>GCC error</samp>&rsquo;, this simply prints an
+informational message, and could be used to include additional warning
+or error text without triggering more warnings or errors.  (Note that
+unlike &lsquo;<samp>warning</samp>&rsquo; and &lsquo;<samp>error</samp>&rsquo;, &lsquo;<samp>message</samp>&rsquo; does not include
+&lsquo;<samp>GCC</samp>&rsquo; as part of the pragma.)
+</p></dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Severity-Pragmas.html" accesskey="n" rel="next">Severity Pragmas</a>, Up: <a href="Pragmas.html" accesskey="u" rel="up">Pragmas</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Pragmas.html
===================================================================
--- public/doc/gnu-c/Pragmas.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Pragmas.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,82 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Pragmas (GNU C Language Manual)</title>
+
+<meta name="description" content="Pragmas (GNU C Language Manual)">
+<meta name="keywords" content="Pragmas (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Directing-Compilation.html" rel="up" title="Directing Compilation">
+<link href="Pragma-Basics.html" rel="next" title="Pragma Basics">
+<link href="Directing-Compilation.html" rel="prev" title="Directing Compilation">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Pragmas"></span><div class="header">
+<p>
+Next: <a href="Static-Assertions.html" accesskey="n" rel="next">Static Assertions</a>, Up: <a href="Directing-Compilation.html" accesskey="u" rel="up">Directing Compilation</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>
+</div>
+<hr>
+<span id="Pragmas-1"></span><h3 class="section">30.1 Pragmas</h3>
+
+<p>A <em>pragma</em> is an annotation in a program that gives direction to
+the compiler.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Pragma-Basics.html" accesskey="1">Pragma Basics</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Pragma syntax and usage.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Severity-Pragmas.html" accesskey="2">Severity Pragmas</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Settings for compile-time pragma output.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Optimization-Pragmas.html" accesskey="3">Optimization Pragmas</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Controlling optimizations.
+</td></tr>
+</table>
+
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Predefined-Macros.html
===================================================================
--- public/doc/gnu-c/Predefined-Macros.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Predefined-Macros.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,266 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Predefined Macros (GNU C Language Manual)</title>
+
+<meta name="description" content="Predefined Macros (GNU C Language Manual)">
+<meta name="keywords" content="Predefined Macros (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Macros.html" rel="up" title="Macros">
+<link href="Undefining-and-Redefining-Macros.html" rel="next" title="Undefining and Redefining Macros">
+<link href="Variadic-Macros.html" rel="prev" title="Variadic Macros">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Predefined-Macros"></span><div class="header">
+<p>
+Next: <a href="Undefining-and-Redefining-Macros.html" accesskey="n" rel="next">Undefining and Redefining Macros</a>, Previous: <a href="Variadic-Macros.html" accesskey="p" rel="prev">Variadic Macros</a>, Up: <a href="Macros.html" accesskey="u" rel="up">Macros</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>
+</div>
+<hr>
+<span id="Predefined-Macros-1"></span><h4 class="subsection">26.5.7 Predefined Macros</h4>
+<span id="index-predefined-macros"></span>
+
+<p>Several object-like macros are predefined; you use them without
+supplying their definitions.  Here we explain the ones user programs
+often need to use.  Many other macro names starting with &lsquo;<samp>__</samp>&rsquo; are
+predefined; in general, you should not define such macro names
+yourself.
+</p>
+<dl compact="compact">
+<dt><code>__FILE__</code></dt>
+<dd><p>This macro expands to the name of the current input file, in the form
+of a C string constant.  This is the full name by which the GCC opened
+the file, not the short name specified in <code>#include</code> or as the
+input file name argument.  For example,
+<code>&quot;/usr/local/include/myheader.h&quot;</code> is a possible expansion of this
+macro.
+</p>
+</dd>
+<dt><code>__LINE__</code></dt>
+<dd><p>This macro expands to the current input line number, in the form of a
+decimal integer constant.  While we call it a predefined macro, it&rsquo;s
+a pretty strange macro, since its &ldquo;definition&rdquo; changes with each
+new line of source code.
+</p>
+</dd>
+<dt><code>__func__</code></dt>
+<dt><code>__FUNCTION__</code></dt>
+<dd><p>These names are like variables that have as value a string containing
+the name of the current function definition.  They are not really
+macros, but this is the best place to mention them.
+</p>
+<p><code>__FUNCTION__</code> is the name that has been defined in GNU C since
+time immemorial; <code>__func__</code> is defined by the C standard.
+With the following conditionals, you can use whichever one is defined.
+</p>
+<div class="example">
+<pre class="example">#if __STDC_VERSION__ &lt; 199901L
+# if __GNUC__ &gt;= 2
+#  define __func__ __FUNCTION__
+# else
+#  define __func__ &quot;&lt;unknown&gt;&quot;
+# endif
+#endif
+</pre></div>
+
+</dd>
+<dt><code>__PRETTY_FUNCTION__</code></dt>
+<dd><p>This is equivalent to <code>__FUNCTION__</code> in C, but in C<code>++</code>
+the string includes argument type information as well.
+It is a GNU C extension.
+</p></dd>
+</dl>
+
+<p>Those features are useful in generating an error message to report an
+inconsistency detected by the program; the message can state the
+source line where the inconsistency was detected.  For example,
+</p>
+<div class="example">
+<pre class="example">fprintf (stderr, &quot;Internal error: &quot;
+                 &quot;negative string length &quot;
+                 &quot;in function %s &quot;
+                 &quot;%d at %s, line %d.&quot;,
+         __func__, length, __FILE__, __LINE__);
+</pre></div>
+
+<p>A <code>#line</code> directive changes <code>__LINE__</code>, and may change
+<code>__FILE__</code> as well.  See <a href="Line-Control.html">Line Control</a>.
+</p>
+<dl compact="compact">
+<dt><code>__DATE__</code></dt>
+<dd><p>This macro expands to a string constant that describes the date of
+compilation.  The string constant contains eleven characters and looks
+like <code>&quot;Feb&nbsp;12&nbsp;1996&quot;<!-- /@w --></code>.  If the day of the month is just one
+digit, an extra space precedes it so that the date is always eleven
+characters.
+</p>
+<p>If the compiler cannot determine the current date, it emits a warning messages
+(once per compilation) and <code>__DATE__</code> expands to
+<code>&quot;???&nbsp;??&nbsp;????&quot;<!-- /@w --></code>.
+</p>
+<p>We deprecate the use of <code>__DATE__</code> for the sake of reproducible
+compilation.
+</p>
+</dd>
+<dt><code>__TIME__</code></dt>
+<dd><p>This macro expands to a string constant that describes the time of
+compilation.  The string constant contains eight characters and looks
+like <code>&quot;23:59:01&quot;</code>.
+</p>
+<p>If the compiler cannot determine the current time, it emits a warning
+message (once per compilation) and <code>__TIME__</code> expands to
+<code>&quot;??:??:??&quot;</code>.
+</p>
+<p>We deprecate the use of <code>__TIME__</code> for the sake of reproducible
+compilation.
+</p>
+</dd>
+<dt><code>__STDC__</code></dt>
+<dd><p>In normal operation, this macro expands to the constant 1, to signify
+that this compiler implements ISO Standard C.
+</p>
+</dd>
+<dt><code>__STDC_VERSION__</code></dt>
+<dd><p>This macro expands to the C Standard&rsquo;s version number, a long integer
+constant of the form <code><var>yyyy</var><var>mm</var>L</code> where <var>yyyy</var> and
+<var>mm</var> are the year and month of the Standard version.  This states
+which version of the C Standard the compiler implements.
+</p>
+<p>The current default value is <code>201112L</code>, which signifies the C
+2011 standard.
+</p>
+</dd>
+<dt><code>__STDC_HOSTED__</code></dt>
+<dd><p>This macro is defined, with value 1, if the compiler&rsquo;s target is a
+<em>hosted environment</em>.  A hosted environment provides the full
+facilities of the standard C library.
+</p></dd>
+</dl>
+
+<p>The rest of the predefined macros are GNU C extensions.
+</p>
+<dl compact="compact">
+<dt><code>__COUNTER__</code></dt>
+<dd><p>This macro expands to sequential integral values starting from 0.  In
+other words, each time the program uses this acro, it generates the
+next successive integer.  This, with the <code>##</code> operator, provides
+a convenient means for macros to generate unique identifiers.
+</p>
+</dd>
+<dt><code>__GNUC__</code></dt>
+<dt><code>__GNUC_MINOR__</code></dt>
+<dt><code>__GNUC_PATCHLEVEL__</code></dt>
+<dd><p>These macros expand to the major version, minor version, and patch
+level of the compiler, as integer constants.  For example, GCC 3.2.1
+expands <code>__GNUC__</code> to 3, <code>__GNUC_MINOR__</code> to 2, and
+<code>__GNUC_PATCHLEVEL__</code> to 1.
+</p>
+<p>If all you need to know is whether or not your program is being
+compiled by GCC, or a non-GCC compiler that claims to accept the GNU C
+extensions, you can simply test <code>__GNUC__</code>.  If you need to write
+code that depends on a specific version, you must check more
+carefully.  Each change in the minor version resets the patch level to
+zero; each change in the major version (which happens rarely) resets
+the minor version and the patch level to zero.  To use the predefined
+macros directly in the conditional, write it like this:
+</p>
+<div class="example">
+<pre class="example">/* <span class="roman">Test for version 3.2.0 or later.</span> */
+#if __GNUC__ &gt; 3 || \
+    (__GNUC__ == 3 &amp;&amp; (__GNUC_MINOR__ &gt; 2 || \
+                       (__GNUC_MINOR__ == 2 &amp;&amp; \
+                        __GNUC_PATCHLEVEL__ &gt; 0))
+</pre></div>
+
+<p>Another approach is to use the predefined macros to
+calculate a single number, then compare that against a threshold:
+</p>
+<div class="example">
+<pre class="example">#define GCC_VERSION (__GNUC__ * 10000 \
+                     + __GNUC_MINOR__ * 100 \
+                     + __GNUC_PATCHLEVEL__)
+/* <span class="roman">&hellip;</span> */
+/* <span class="roman">Test for GCC &gt; 3.2.0</span> */
+#if GCC_VERSION &gt; 30200
+</pre></div>
+
+<p>Many people find this form easier to understand.
+</p>
+</dd>
+<dt><code>__VERSION__</code></dt>
+<dd><p>This macro expands to a string constant that describes the version of
+the compiler in use.  You should not rely on its contents&rsquo; having any
+particular form, but you can count on it to contain at least the
+release number.
+</p>
+</dd>
+<dt><code>__TIMESTAMP__</code></dt>
+<dd><p>This macro expands to a string constant that describes the date and
+time of the last modification of the current source file. The string
+constant contains abbreviated day of the week, month, day of the
+month, time in hh:mm:ss form, and the year, in the format
+<code>&quot;Sun&nbsp;Sep&nbsp;16&nbsp;01:03:52&nbsp;1973&quot;<!-- /@w --></code>.  If the day of the month is
+less than 10, it is padded with a space on the left.
+</p>
+<p>If GCC cannot determine that information date, it emits a warning
+message (once per compilation) and <code>__TIMESTAMP__</code> expands to
+<code>&quot;???&nbsp;???&nbsp;??&nbsp;??:??:??&nbsp;????&quot;<!-- /@w --></code>.
+</p>
+<p>We deprecate the use of this macro for the sake of reproducible
+compilation.
+</p></dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Undefining-and-Redefining-Macros.html" accesskey="n" rel="next">Undefining and Redefining Macros</a>, Previous: <a href="Variadic-Macros.html" accesskey="p" rel="prev">Variadic Macros</a>, Up: <a href="Macros.html" accesskey="u" rel="up">Macros</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Preproc-Overview.html
===================================================================
--- public/doc/gnu-c/Preproc-Overview.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Preproc-Overview.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,104 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Preproc Overview (GNU C Language Manual)</title>
+
+<meta name="description" content="Preproc Overview (GNU C Language Manual)">
+<meta name="keywords" content="Preproc Overview (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Preprocessing.html" rel="up" title="Preprocessing">
+<link href="Directives.html" rel="next" title="Directives">
+<link href="Preprocessing.html" rel="prev" title="Preprocessing">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Preproc-Overview"></span><div class="header">
+<p>
+Next: <a href="Directives.html" accesskey="n" rel="next">Directives</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>
+</div>
+<hr>
+<span id="Preprocessing-Overview"></span><h3 class="section">26.1 Preprocessing Overview</h3>
+
+<p>GNU C performs preprocessing on each line of a C program as the first
+stage of compilation.  Preprocessing operates on a line only when it
+contains a <em>preprocessing directive</em> or uses a <em>macro</em>&mdash;all
+other lines pass through preprocessing unchanged.
+</p>
+<p>Here are some jobs that preprocessing does.  The rest of
+this chapter gives the details.
+</p>
+<ul>
+<li> Inclusion of header files.  These are files (usually containing
+declarations and macro definitions) that can be substituted into your
+program.
+
+</li><li> Macro expansion.  You can define <em>macros</em>, which are abbreviations
+for arbitrary fragments of C code.  Preprocessing replaces the macros
+with their definitions.  Some macros are automatically predefined.
+
+</li><li> Conditional compilation.  You can include or exclude parts of the
+program according to various conditions.
+
+</li><li> Line control.  If you use a program to combine or rearrange source files
+into an intermediate file that is then compiled, you can use line
+control to inform the compiler where each source line originally came
+from.
+
+</li><li> Compilation control.  <code>#pragma</code> and <code>_Pragma</code> invoke
+some special compiler features in how to handle certain constructs.
+
+</li><li> Diagnostics.  You can detect problems at compile time and issue errors
+or warnings.
+</li></ul>
+
+<p>Except for expansion of predefined macros, all these operations happen
+only if you use preprocessing directives to request them.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Preprocessing-Tokens.html
===================================================================
--- public/doc/gnu-c/Preprocessing-Tokens.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Preprocessing-Tokens.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,186 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Preprocessing Tokens (GNU C Language Manual)</title>
+
+<meta name="description" content="Preprocessing Tokens (GNU C Language Manual)">
+<meta name="keywords" content="Preprocessing Tokens (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Preprocessing.html" rel="up" title="Preprocessing">
+<link href="Header-Files.html" rel="next" title="Header Files">
+<link href="Directives.html" rel="prev" title="Directives">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Preprocessing-Tokens"></span><div class="header">
+<p>
+Next: <a href="Header-Files.html" accesskey="n" rel="next">Header Files</a>, Previous: <a href="Directives.html" accesskey="p" rel="prev">Directives</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>
+</div>
+<hr>
+<span id="Preprocessing-Tokens-1"></span><h3 class="section">26.3 Preprocessing Tokens</h3>
+
+<span id="index-preprocessing-tokens"></span>
+<p>Preprocessing divides C code (minus its comments) into
+<em>tokens</em> that are similar to C tokens, but not exactly the same.
+Here are the quirks of preprocessing tokens.
+</p>
+<p>The main classes of preprocessing tokens are identifiers,
+preprocessing numbers, string constants, character constants, and
+punctuators; there are a few others too.
+</p>
+<dl compact="compact">
+<dt>identifier</dt>
+<dd><span id="index-identifiers-1"></span>
+<p>An <em>identifier</em> preprocessing token is syntactically like an
+identifier in C: any sequence of letters, digits, or underscores, as
+well as non-ASCII characters represented using &lsquo;<samp>\U</samp>&rsquo; or &lsquo;<samp>\u</samp>&rsquo;,
+that doesn&rsquo;t begin with a digit.
+</p>
+<p>During preprocessing, the keywords of C have no special significance;
+at that stage, they are simply identifiers.  Thus, you can define a
+macro whose name is a keyword.  The only identifier that is special
+during preprocessing is <code>defined</code> (see <a href="defined.html">defined</a>).
+</p>
+</dd>
+<dt>preprocessing number</dt>
+<dd><span id="index-numbers_002c-preprocessing"></span>
+<span id="index-preprocessing-numbers"></span>
+<p>A <em>preprocessing number</em> is something that preprocessing treats
+textually as a number, including C numeric constants, and other
+sequences of characters which resemble numeric constants.
+Preprocessing does not try to verify that a preprocessing number is a
+valid number in C, and indeed it need not be one.
+</p>
+<p>More precisely, preprocessing numbers begin with an optional period, a
+required decimal digit, and then continue with any sequence of
+letters, digits, underscores, periods, and exponents.  Exponents are
+the two-character sequences &lsquo;<samp>e+</samp>&rsquo;, &lsquo;<samp>e-</samp>&rsquo;, &lsquo;<samp>E+</samp>&rsquo;,
+&lsquo;<samp>E-</samp>&rsquo;, &lsquo;<samp>p+</samp>&rsquo;, &lsquo;<samp>p-</samp>&rsquo;, &lsquo;<samp>P+</samp>&rsquo;, and &lsquo;<samp>P-</samp>&rsquo;.  (The
+exponents that begin with &lsquo;<samp>p</samp>&rsquo; or &lsquo;<samp>P</samp>&rsquo; are new to C99.  They
+are used for hexadecimal floating-point constants.)
+</p>
+<p>The reason behind this unusual syntactic class is that the full
+complexity of numeric constants is irrelevant during preprocessing.
+The distinction between lexically valid and invalid floating-point
+numbers, for example, doesn&rsquo;t matter at this stage.  The use of
+preprocessing numbers makes it possible to split an identifier at any
+position and get exactly two tokens, and reliably paste them together
+using the <code>##</code> operator (see <a href="Concatenation.html">Concatenation</a>).
+</p>
+</dd>
+<dt>punctuator</dt>
+<dd><p>A <em>punctuator</em> is syntactically like an operator.
+These are the valid punctuators:
+</p>
+<div class="example">
+<pre class="example">[  ]   (  )  {  }  .  -&gt;
+++ --  &amp;  *  +  -  ~  !
+/  %   &lt;&lt; &gt;&gt; &lt;  &gt;  &lt;= &gt;=  ==  !=  ^  |  &amp;&amp;  ||
+?  :   ;  ...
+=  *=  /=  %=  +=  -=  &lt;&lt;=  &gt;&gt;=  &amp;=  ^=  |=
+,  #   ##
+&lt;: :&gt;  &lt;% %&gt;  %:  %:%:
+</pre></div>
+
+</dd>
+<dt>string constant</dt>
+<dd><p>A string constant in the source code is recognized by preprocessing as
+a single preprocessing token.
+</p>
+</dd>
+<dt>character constant</dt>
+<dd><p>A character constant in the source code is recognized by preprocessing
+as a single preprocessing token.
+</p>
+</dd>
+<dt>header name</dt>
+<dd><p>Within the <code>#include</code> directive, preprocessing recognizes a
+<em>header name</em> token.  It consists of &lsquo;<samp>&quot;<var>name</var>&quot;</samp>&rsquo;, where
+<var>name</var> is a sequence of source characters other than newline and
+&lsquo;<samp>&quot;</samp>&rsquo;, or &lsquo;<samp>&lt;<var>name</var>&gt;</samp>&rsquo;, where <var>name</var> is a sequence of
+source characters other than newline and &lsquo;<samp>&gt;</samp>&rsquo;.
+</p>
+<p>In practice, it is more convenient to think that the <code>#include</code> line
+is exempt from tokenization.
+</p>
+</dd>
+<dt>other</dt>
+<dd><p>Any other character that&rsquo;s valid in a C source program
+is treated as a separate preprocessing token.
+</p></dd>
+</dl>
+
+<p>Once the program is broken into preprocessing tokens, they remain
+separate until the end of preprocessing.  Macros that generate two
+consecutive tokens insert whitespace to keep them separate, if
+necessary.  For example,
+</p>
+<div class="example">
+<pre class="example">#define foo() bar
+foo()baz
+     &rarr; bar baz
+<em>not</em>
+     &rarr; barbaz
+</pre></div>
+
+<p>The only exception is with the <code>##</code> preprocessing operator, which
+pastes tokens together (see <a href="Concatenation.html">Concatenation</a>).
+</p>
+<p>Preprocessing treats the null character (code 0) as whitespace, but
+generates a warning for it because it may be invisible to the user
+(many terminals do not display it at all) and its presence in the file
+is probably a mistake.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Header-Files.html" accesskey="n" rel="next">Header Files</a>, Previous: <a href="Directives.html" accesskey="p" rel="prev">Directives</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Preprocessing.html
===================================================================
--- public/doc/gnu-c/Preprocessing.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Preprocessing.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,94 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Preprocessing (GNU C Language Manual)</title>
+
+<meta name="description" content="Preprocessing (GNU C Language Manual)">
+<meta name="keywords" content="Preprocessing (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html" rel="up" title="Top">
+<link href="Preproc-Overview.html" rel="next" title="Preproc Overview">
+<link href="Scope.html" rel="prev" title="Scope">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Preprocessing"></span><div class="header">
+<p>
+Next: <a href="Integers-in-Depth.html" accesskey="n" rel="next">Integers in Depth</a>, Previous: <a href="Scope.html" accesskey="p" rel="prev">Scope</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</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>
+</div>
+<hr>
+<span id="Preprocessing-1"></span><h2 class="chapter">26 Preprocessing</h2>
+<span id="index-preprocessing"></span>
+<p>As the first stage of compiling a C source module, GCC transforms the
+text with text substitutions and file inclusions.  This is called
+<em>preprocessing</em>.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Preproc-Overview.html" accesskey="1">Preproc Overview</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Directives.html" accesskey="2">Directives</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Preprocessing-Tokens.html" accesskey="3">Preprocessing Tokens</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Header-Files.html" accesskey="4">Header Files</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Macros.html" accesskey="5">Macros</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Conditionals.html" accesskey="6">Conditionals</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Diagnostics.html" accesskey="7">Diagnostics</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Line-Control.html" accesskey="8">Line Control</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Null-Directive.html" accesskey="9">Null Directive</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Primitive-Types.html
===================================================================
--- public/doc/gnu-c/Primitive-Types.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Primitive-Types.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,92 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Primitive Types (GNU C Language Manual)</title>
+
+<meta name="description" content="Primitive Types (GNU C Language Manual)">
+<meta name="keywords" content="Primitive Types (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html" rel="up" title="Top">
+<link href="Integer-Types.html" rel="next" title="Integer Types">
+<link href="Optimization-and-Ordering.html" rel="prev" title="Optimization and Ordering">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Primitive-Types"></span><div class="header">
+<p>
+Next: <a href="Constants.html" accesskey="n" rel="next">Constants</a>, Previous: <a href="Order-of-Execution.html" accesskey="p" rel="prev">Order of Execution</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</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>
+</div>
+<hr>
+<span id="Primitive-Data-Types"></span><h2 class="chapter">11 Primitive Data Types</h2>
+<span id="index-primitive-types"></span>
+<span id="index-types_002c-primitive"></span>
+
+<p>This chapter describes all the primitive data types of C&mdash;that is,
+all the data types that aren&rsquo;t built up from other types.  They
+include the types <code>int</code> and <code>double</code> that we&rsquo;ve already covered.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Integer-Types.html" accesskey="1">Integer Types</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Description of integer types.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Floating_002dPoint-Data-Types.html" accesskey="2">Floating-Point Data Types</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Description of floating-point types.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Complex-Data-Types.html" accesskey="3">Complex Data Types</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Description of complex number types.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="The-Void-Type.html" accesskey="4">The Void Type</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">A type indicating no value at all.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Other-Data-Types.html" accesskey="5">Other Data Types</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">A brief summary of other types.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Type-Designators.html" accesskey="6">Type Designators</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Referring to a data type abstractly.
+</td></tr>
+</table>
+
+<p>These types are all made up of bytes (see <a href="Storage.html">Storage</a>).
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Printing-Pointers.html
===================================================================
--- public/doc/gnu-c/Printing-Pointers.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Printing-Pointers.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,84 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Printing Pointers (GNU C Language Manual)</title>
+
+<meta name="description" content="Printing Pointers (GNU C Language Manual)">
+<meta name="keywords" content="Printing Pointers (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Pointers.html" rel="up" title="Pointers">
+<link href="Structures.html" rel="next" title="Structures">
+<link href="Pointer_002dInteger-Conversion.html" rel="prev" title="Pointer-Integer Conversion">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Printing-Pointers"></span><div class="header">
+<p>
+Previous: <a href="Pointer_002dInteger-Conversion.html" accesskey="p" rel="prev">Pointer-Integer Conversion</a>, Up: <a href="Pointers.html" accesskey="u" rel="up">Pointers</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>
+</div>
+<hr>
+<span id="Printing-Pointers-1"></span><h3 class="section">14.16 Printing Pointers</h3>
+
+<p>To print the numeric value of a pointer, use the &lsquo;<samp>%p</samp>&rsquo; specifier.
+For example:
+</p>
+<div class="example">
+<pre class="example">void
+print_pointer (void *ptr)
+{
+  printf (&quot;Pointer value is %p\n&quot;, ptr);
+}
+</pre></div>
+
+<p>The specification &lsquo;<samp>%p</samp>&rsquo; works with any pointer type.  It prints
+&lsquo;<samp>0x</samp>&rsquo; followed by the address in hexadecimal, printed as the
+appropriate unsigned integer type.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Recursive-Fibonacci.html
===================================================================
--- public/doc/gnu-c/Recursive-Fibonacci.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Recursive-Fibonacci.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,146 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Recursive Fibonacci (GNU C Language Manual)</title>
+
+<meta name="description" content="Recursive Fibonacci (GNU C Language Manual)">
+<meta name="keywords" content="Recursive Fibonacci (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="The-First-Example.html" rel="up" title="The First Example">
+<link href="Function-Header.html" rel="next" title="Function Header">
+<link href="The-First-Example.html" rel="prev" title="The First Example">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Recursive-Fibonacci"></span><div class="header">
+<p>
+Next: <a href="Stack.html" accesskey="n" rel="next">Stack</a>, Up: <a href="The-First-Example.html" accesskey="u" rel="up">The First Example</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>
+</div>
+<hr>
+<span id="Example_003a-Recursive-Fibonacci"></span><h3 class="section">1.1 Example: Recursive Fibonacci</h3>
+<span id="index-recursive-Fibonacci-function"></span>
+<span id="index-Fibonacci-function_002c-recursive"></span>
+
+<p>To introduce the most basic features of C, let&rsquo;s look at code for a
+simple mathematical function that does calculations on integers.  This
+function calculates the <var>n</var>th number in the Fibonacci series, in
+which each number is the sum of the previous two: 1, 1, 2, 3, 5, 8,
+13, 21, 34, 55, &hellip;.
+</p>
+<div class="example">
+<pre class="example">int
+fib (int n)
+{
+  if (n &lt;= 2)  /* <span class="roman">This avoids infinite recursion.</span>  */
+    return 1;
+  else
+    return fib (n - 1) + fib (n - 2);
+}
+</pre></div>
+
+<p>This very simple program illustrates several features of C:
+</p>
+<ul>
+<li> A function definition, whose first two lines constitute the function
+header.  See <a href="Function-Definitions.html">Function Definitions</a>.
+
+</li><li> A function parameter <code>n</code>, referred to as the variable <code>n</code>
+inside the function body.  See <a href="Function-Parameter-Variables.html">Function Parameter Variables</a>.
+A function definition uses parameters to refer to the argument
+values provided in a call to that function.
+
+</li><li> Arithmetic.  C programs add with &lsquo;<samp>+</samp>&rsquo; and subtract with
+&lsquo;<samp>-</samp>&rsquo;.  See <a href="Arithmetic.html">Arithmetic</a>.
+
+</li><li> Numeric comparisons.  The operator &lsquo;<samp>&lt;=</samp>&rsquo; tests for &ldquo;less than or
+equal.&rdquo;  See <a href="Numeric-Comparisons.html">Numeric Comparisons</a>.
+
+</li><li> Integer constants written in base 10.
+See <a href="Integer-Constants.html">Integer Constants</a>.
+
+</li><li> A function call.  The function call <code>fib (n - 1)</code> calls the
+function <code>fib</code>, passing as its argument the value <code>n - 1</code>.
+See <a href="Function-Calls.html">Function Calls</a>.
+
+</li><li> A comment, which starts with &lsquo;<samp>/*</samp>&rsquo; and ends with &lsquo;<samp>*/</samp>&rsquo;.  The
+comment has no effect on the execution of the program.  Its purpose is
+to provide explanations to people reading the source code.  Including
+comments in the code is tremendously important&mdash;they provide
+background information so others can understand the code more quickly.
+See <a href="Comments.html">Comments</a>.
+
+</li><li> Two kinds of statements, the <code>return</code> statement and the
+<code>if</code>&hellip;<code>else</code> statement.  See <a href="Statements.html">Statements</a>.
+
+</li><li> Recursion.  The function <code>fib</code> calls itself; that is called a
+<em>recursive call</em>.  These are valid in C, and quite common.
+
+<p>The <code>fib</code> function would not be useful if it didn&rsquo;t return.
+Thus, recursive definitions, to be of any use, must avoid infinite
+recursion.
+</p>
+<p>This function definition prevents infinite recursion by specially
+handling the case where <code>n</code> is two or less.  Thus the maximum
+depth of recursive calls is less than <code>n</code>.
+</p></li></ul>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Function-Header.html" accesskey="1">Function Header</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The function&rsquo;s name and how it is called.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Function-Body.html" accesskey="2">Function Body</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Declarations and statements that implement the function.
+</td></tr>
+</table>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Stack.html" accesskey="n" rel="next">Stack</a>, Up: <a href="The-First-Example.html" accesskey="u" rel="up">The First Example</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Referencing-Fields.html
===================================================================
--- public/doc/gnu-c/Referencing-Fields.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Referencing-Fields.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,120 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Referencing Fields (GNU C Language Manual)</title>
+
+<meta name="description" content="Referencing Fields (GNU C Language Manual)">
+<meta name="keywords" content="Referencing Fields (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Structures.html" rel="up" title="Structures">
+<link href="Dynamic-Memory-Allocation.html" rel="next" title="Dynamic Memory Allocation">
+<link href="Structures.html" rel="prev" title="Structures">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Referencing-Fields"></span><div class="header">
+<p>
+Next: <a href="Dynamic-Memory-Allocation.html" accesskey="n" rel="next">Dynamic Memory Allocation</a>, Up: <a href="Structures.html" accesskey="u" rel="up">Structures</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>
+</div>
+<hr>
+<span id="Referencing-Structure-Fields"></span><h3 class="section">15.1 Referencing Structure Fields</h3>
+<span id="index-referencing-structure-fields"></span>
+<span id="index-structure-fields_002c-referencing"></span>
+
+<p>To make a structure useful, there has to be a way to examine and store
+its fields.  The &lsquo;<samp>.</samp>&rsquo; (period) operator does that; its use looks
+like <code><var>object</var>.<var>field</var></code>.
+</p>
+<p>Given this structure and variable,
+</p>
+<div class="example">
+<pre class="example">struct intlistlink
+  {
+    int datum;
+    struct intlistlink *next;
+  };
+
+struct intlistlink foo;
+</pre></div>
+
+<p>you can write <code>foo.datum</code> and <code>foo.next</code> to refer to the two
+fields in the value of <code>foo</code>.  These fields are lvalues, so you
+can store values into them, and read the values out again.
+</p>
+<p>Most often, structures are dynamically allocated (see the next
+section), and we refer to the objects via pointers.
+<code>(*p).<var>field</var></code> is somewhat cumbersome, so there is an
+abbreviation: <code>p-&gt;<var>field</var></code>.  For instance, assume the program
+contains this declaration:
+</p>
+<div class="example">
+<pre class="example">struct intlistlink *ptr;
+</pre></div>
+
+<p>You can write <code>ptr-&gt;datum</code> and <code>ptr-&gt;next</code> to refer
+to the two fields in the object that <code>ptr</code> points to.
+</p>
+<p>If a unary operator precedes an expression using &lsquo;<samp>-&gt;</samp>&rsquo;,
+the &lsquo;<samp>-&gt;</samp>&rsquo; nests inside:
+</p>
+<div class="example">
+<pre class="example">  -ptr-&gt;datum   <span class="roman">is equivalent to</span>   -(ptr-&gt;datum)
+</pre></div>
+
+<p>You can intermix &lsquo;<samp>-&gt;</samp>&rsquo; and &lsquo;<samp>.</samp>&rsquo; without parentheses,
+as shown here:
+</p>
+<div class="example">
+<pre class="example">struct { double d; struct intlistlink l; } foo;
+
+<span class="roman">&hellip;</span>foo.l.next-&gt;next-&gt;datum<span class="roman">&hellip;</span>
+</pre></div>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Reordering-of-Operands.html
===================================================================
--- public/doc/gnu-c/Reordering-of-Operands.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Reordering-of-Operands.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,97 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Reordering of Operands (GNU C Language Manual)</title>
+
+<meta name="description" content="Reordering of Operands (GNU C Language Manual)">
+<meta name="keywords" content="Reordering of Operands (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Order-of-Execution.html" rel="up" title="Order of Execution">
+<link href="Associativity-and-Ordering.html" rel="next" title="Associativity and Ordering">
+<link href="Order-of-Execution.html" rel="prev" title="Order of Execution">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Reordering-of-Operands"></span><div class="header">
+<p>
+Next: <a href="Associativity-and-Ordering.html" accesskey="n" rel="next">Associativity and Ordering</a>, Up: <a href="Order-of-Execution.html" accesskey="u" rel="up">Order of Execution</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>
+</div>
+<hr>
+<span id="Reordering-of-Operands-1"></span><h3 class="section">10.1 Reordering of Operands</h3>
+<span id="index-ordering-of-operands"></span>
+<span id="index-reordering-of-operands"></span>
+<span id="index-operand-execution-ordering"></span>
+
+<p>The C language does not necessarily carry out operations within an
+expression in the order they appear in the code.  For instance, in
+this expression,
+</p>
+<div class="example">
+<pre class="example">foo () + bar ()
+</pre></div>
+
+<p><code>foo</code> might be called first or <code>bar</code> might be called first.
+If <code>foo</code> updates a datum and <code>bar</code> uses that datum, the
+results can be unpredictable.
+</p>
+<p>The unpredictable order of computation of subexpressions also makes a
+difference when one of them contains an assignment.  We already saw
+this example of bad code,
+</p>
+<div class="example">
+<pre class="example">x = 20;
+printf (&quot;%d %d\n&quot;, x, x = 4);
+</pre></div>
+
+<p>in which the second argument, <code>x</code>, has a different value
+depending on whether it is computed before or after the assignment in
+the third argument.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Round_002dTrip-Base-Conversion.html
===================================================================
--- public/doc/gnu-c/Round_002dTrip-Base-Conversion.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Round_002dTrip-Base-Conversion.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,128 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Round-Trip Base Conversion (GNU C Language Manual)</title>
+
+<meta name="description" content="Round-Trip Base Conversion (GNU C Language Manual)">
+<meta name="keywords" content="Round-Trip Base Conversion (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Floating-Point-in-Depth.html" rel="up" title="Floating Point in Depth">
+<link href="Further-Reading.html" rel="next" title="Further Reading">
+<link href="Complex-Arithmetic.html" rel="prev" title="Complex Arithmetic">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Round_002dTrip-Base-Conversion"></span><div class="header">
+<p>
+Next: <a href="Further-Reading.html" accesskey="n" rel="next">Further Reading</a>, Previous: <a href="Complex-Arithmetic.html" accesskey="p" rel="prev">Complex Arithmetic</a>, Up: <a href="Floating-Point-in-Depth.html" accesskey="u" rel="up">Floating Point in Depth</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>
+</div>
+<hr>
+<span id="Round_002dTrip-Base-Conversion-1"></span><h3 class="section">28.20 Round-Trip Base Conversion</h3>
+<span id="index-round_002dtrip-base-conversion"></span>
+<span id="index-base-conversion-_0028floating-point_0029"></span>
+<span id="index-floating_002dpoint-round_002dtrip-base-conversion"></span>
+
+<p>Most numeric programs involve converting between base-2 floating-point
+numbers, as represented by the computer, and base-10 floating-point
+numbers, as entered and handled by the programmer.  What might not be
+obvious is the number of base-2 bits vs. base-10 digits required for
+each representation.  Consider the following tables showing the number of
+decimal digits representable in a given number of bits, and vice versa:
+</p>
+<table>
+<tr><td width="50%">binary in</td><td width="10%">24</td><td width="10%">53</td><td width="10%">64</td><td width="10%">113</td><td width="10%">237</td></tr>
+<tr><td width="50%">decimal out</td><td width="10%">9</td><td width="10%">17</td><td width="10%">21</td><td width="10%">36</td><td width="10%">73</td></tr>
+</table>
+
+<table>
+<tr><td width="50%">decimal in</td><td width="10%">7</td><td width="10%">16</td><td width="10%">34</td><td width="10%">70</td></tr>
+<tr><td width="50%">binary out</td><td width="10%">25</td><td width="10%">55</td><td width="10%">114</td><td width="10%">234</td></tr>
+</table>
+
+<p>We can compute the table numbers with these two functions:
+</p>
+<div class="example">
+<pre class="example">int
+matula(int nbits)
+{   /* <span class="roman">Return output decimal digits needed for nbits-bits input.</span> */
+    return ((int)ceil((double)nbits / log2(10.0) + 1.0));
+}
+
+int
+goldberg(int ndec)
+{   /* <span class="roman">Return output bits needed for ndec-digits input.</span> */
+    return ((int)ceil((double)ndec / log10(2.0) + 1.0));
+}
+</pre></div>
+
+<p>One significant observation from those numbers is that we cannot
+achieve correct round-trip conversion between the decimal and
+binary formats in the same storage size!  For example, we need 25
+bits to represent a 7-digit value from the 32-bit decimal format,
+but the binary format only has 24 available.  Similar
+observations hold for each of the other conversion pairs.
+</p>
+<p>The general input/output base-conversion problem is astonishingly
+complicated, and solutions were not generally known until the
+publication of two papers in 1990 that are listed later near the end
+of this chapter.  For the 128-bit formats, the worst case needs more
+than 11,500 decimal digits of precision to guarantee correct rounding
+in a binary-to-decimal conversion!
+</p>
+<p>For further details see the references for Bennett Goldberg and David
+Matula.
+</p>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Further-Reading.html" accesskey="n" rel="next">Further Reading</a>, Previous: <a href="Complex-Arithmetic.html" accesskey="p" rel="prev">Complex Arithmetic</a>, Up: <a href="Floating-Point-in-Depth.html" accesskey="u" rel="up">Floating Point in Depth</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Rounding-Control.html
===================================================================
--- public/doc/gnu-c/Rounding-Control.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Rounding-Control.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,120 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Rounding Control (GNU C Language Manual)</title>
+
+<meta name="description" content="Rounding Control (GNU C Language Manual)">
+<meta name="keywords" content="Rounding Control (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Floating-Point-in-Depth.html" rel="up" title="Floating Point in Depth">
+<link href="Machine-Epsilon.html" rel="next" title="Machine Epsilon">
+<link href="Scaling-by-the-Base.html" rel="prev" title="Scaling by the Base">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Rounding-Control"></span><div class="header">
+<p>
+Next: <a href="Machine-Epsilon.html" accesskey="n" rel="next">Machine Epsilon</a>, Previous: <a href="Scaling-by-the-Base.html" accesskey="p" rel="prev">Scaling by the Base</a>, Up: <a href="Floating-Point-in-Depth.html" accesskey="u" rel="up">Floating Point in Depth</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>
+</div>
+<hr>
+<span id="Rounding-Control-1"></span><h3 class="section">28.17 Rounding Control</h3>
+<span id="index-rounding-control-_0028floating-point_0029"></span>
+<span id="index-floating_002dpoint-rounding-control"></span>
+
+<p>Here we describe how to specify the rounding mode at run time.  System
+header file <samp>fenv.h</samp> provides the prototypes for these functions.
+See <a href="https://www.gnu.org/software/libc/manual/html_node/Rounding.html#Rounding">Rounding</a> in <cite>The GNU C Library Reference Manual</cite>.
+</p>
+<p>That header file also provides constant names for the four rounding modes:
+<code>FE_DOWNWARD</code>, <code>FE_TONEAREST</code>, <code>FE_TOWARDZERO</code>, and
+<code>FE_UPWARD</code>.
+</p>
+<p>The function <code>fegetround</code> examines and returns the current
+rounding mode.  On a platform with IEEE 754 floating point,
+the value will always equal one of those four constants.
+On other platforms, it may return a negative value. The function
+<code>fesetround</code> sets the current rounding mode.
+</p>
+<p>Changing the rounding mode can be slow, so it is useful to minimize
+the number of changes.  For interval arithmetic, we seem to need three
+changes for each operation, but we really only need two, because we
+can write code like this example for interval addition of two reals:
+</p>
+<div class="example">
+<pre class="example">{
+  struct interval_double
+    {
+      double hi, lo;
+    } v;
+  volatile double x, y;
+  int rule;
+
+  rule = fegetround ();
+
+  if (fesetround (FE_UPWARD) == 0)
+    {
+      v.hi = x + y;
+      v.lo = -(-x - y);
+    }
+  else
+    fatal (&quot;ERROR: failed to change rounding rule&quot;);
+
+  if (fesetround (rule) != 0)
+    fatal (&quot;ERROR: failed to restore rounding rule&quot;);
+}
+</pre></div>
+
+<p>The <code>volatile</code> qualifier (see <a href="volatile.html">volatile</a>) is essential on x86
+platforms to prevent an optimizing compiler from producing the same
+value for both bounds.
+</p>
+
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Rounding-Issues.html
===================================================================
--- public/doc/gnu-c/Rounding-Issues.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Rounding-Issues.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,117 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Rounding Issues (GNU C Language Manual)</title>
+
+<meta name="description" content="Rounding Issues (GNU C Language Manual)">
+<meta name="keywords" content="Rounding Issues (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Floating-Point-in-Depth.html" rel="up" title="Floating Point in Depth">
+<link href="Significance-Loss.html" rel="next" title="Significance Loss">
+<link href="Rounding.html" rel="prev" title="Rounding">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Rounding-Issues"></span><div class="header">
+<p>
+Next: <a href="Significance-Loss.html" accesskey="n" rel="next">Significance Loss</a>, Previous: <a href="Rounding.html" accesskey="p" rel="prev">Rounding</a>, Up: <a href="Floating-Point-in-Depth.html" accesskey="u" rel="up">Floating Point in Depth</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>
+</div>
+<hr>
+<span id="Rounding-Issues-1"></span><h3 class="section">28.8 Rounding Issues</h3>
+<span id="index-rounding-issues-_0028floating-point_0029"></span>
+<span id="index-floating_002dpoint-rounding-issues"></span>
+
+<p>The default IEEE 754 rounding mode minimizes errors, and most
+normal computations should not suffer any serious accumulation of
+errors from rounding.
+</p>
+<p>Of course, you can contrive examples where that is not so.  Here
+is one: iterate a square root, then attempt to recover the
+original value by repeated squaring.
+</p>
+<div class="example">
+<pre class="example">#include &lt;stdio.h&gt;
+#include &lt;math.h&gt;
+
+int main (void)
+{
+  double x = 100.0;
+  double y;
+  for (n = 10; n &lt;= 100; n += 10)
+    {
+      y = x;
+      for (k = 0; k &lt; n; ++k) y = sqrt (y);
+      for (k = 0; k &lt; n; ++k) y *= y;
+      printf (&quot;n = %3d; x = %.0f\ty = %.6f\n&quot;, n, x, y);
+    }
+  return 0;
+}
+</pre></div>
+
+<p>Here is the output:
+</p>
+<div class="example">
+<pre class="example">n =  10; x = 100        y = 100.000000
+n =  20; x = 100        y = 100.000000
+n =  30; x = 100        y = 99.999977
+n =  40; x = 100        y = 99.981025
+n =  50; x = 100        y = 90.017127
+n =  60; x = 100        y = 1.000000
+n =  70; x = 100        y = 1.000000
+n =  80; x = 100        y = 1.000000
+n =  90; x = 100        y = 1.000000
+n = 100; x = 100        y = 1.000000
+</pre></div>
+
+<p>After 50 iterations, <code>y</code> has barely one correct digit, and
+soon after, there are no correct digits.
+</p>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Rounding.html
===================================================================
--- public/doc/gnu-c/Rounding.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Rounding.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,126 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Rounding (GNU C Language Manual)</title>
+
+<meta name="description" content="Rounding (GNU C Language Manual)">
+<meta name="keywords" content="Rounding (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Floating-Point-in-Depth.html" rel="up" title="Floating Point in Depth">
+<link href="Rounding-Issues.html" rel="next" title="Rounding Issues">
+<link href="Exact-Floating_002dPoint.html" rel="prev" title="Exact Floating-Point">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Rounding"></span><div class="header">
+<p>
+Next: <a href="Rounding-Issues.html" accesskey="n" rel="next">Rounding Issues</a>, Previous: <a href="Exact-Floating_002dPoint.html" accesskey="p" rel="prev">Exact Floating-Point</a>, Up: <a href="Floating-Point-in-Depth.html" accesskey="u" rel="up">Floating Point in Depth</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>
+</div>
+<hr>
+<span id="Rounding-1"></span><h3 class="section">28.7 Rounding</h3>
+<span id="index-rounding"></span>
+
+<p>When floating-point arithmetic produces a result that can&rsquo;t fit
+exactly in the significand of the type that&rsquo;s in use, it has to
+<em>round</em> the value.  The basic arithmetic operations&mdash;addition,
+subtraction, multiplication, division, and square root&mdash;always produce
+a result that is equivalent to the exact, possibly infinite-precision
+result rounded to storage precision according to the current rounding
+rule.
+</p>
+<p>Rounding sets the <code>FE_INEXACT</code> exception flag (see <a href="Exception-Flags.html">Exception Flags</a>).  This enables programs to determine that rounding has
+occurred.
+</p>
+<p>Rounding consists of adjusting the exponent to bring the significand
+back to the required base-point alignment, then applying the current
+<em>rounding rule</em> to squeeze the significand into the fixed
+available size.
+</p>
+<p>The current rule is selected at run time from four options.  Here they
+are:
+</p>
+<ul class="no-bullet">
+<li>* <em>round-to-nearest</em>, with ties rounded to an even integer;
+
+</li><li>* <em>round-up</em>, towards <code>+Infinity</code>;
+
+</li><li>* <em>round-down</em>, towards <code>-Infinity</code>;
+
+</li><li>* <em>round-towards-zero</em>.
+</li></ul>
+
+<p>Under those four rounding rules, a decimal value
+<code>-1.2345</code> that is to be rounded to a four-digit result would
+become <code>-1.234</code>, <code>-1.234</code>, <code>-1.235</code>, and
+<code>-1.234</code>, respectively.
+</p>
+<p>The default rounding rule is <em>round-to-nearest</em>, because that has
+the least bias, and produces the lowest average error.  When the true
+result lies exactly halfway between two representable machine numbers,
+the result is rounded to the one that ends with an even digit.
+</p>
+<p>The <em>round-towards-zero</em> rule was common on many early computer
+designs, because it is the easiest to implement: it just requires
+silent truncation of all extra bits.
+</p>
+<p>The two other rules, <em>round-up</em> and <em>round-down</em>, are
+essential for implementing <em>interval arithmetic</em>, whereby
+each arithmetic operation produces lower and upper bounds that
+are guaranteed to enclose the exact result.
+</p>
+<p>See <a href="Rounding-Control.html">Rounding Control</a>, for details on getting and setting the
+current rounding mode.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Rounding-Issues.html" accesskey="n" rel="next">Rounding Issues</a>, Previous: <a href="Exact-Floating_002dPoint.html" accesskey="p" rel="prev">Exact Floating-Point</a>, Up: <a href="Floating-Point-in-Depth.html" accesskey="u" rel="up">Floating Point in Depth</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Scaling-by-the-Base.html
===================================================================
--- public/doc/gnu-c/Scaling-by-the-Base.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Scaling-by-the-Base.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,104 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Scaling by the Base (GNU C Language Manual)</title>
+
+<meta name="description" content="Scaling by the Base (GNU C Language Manual)">
+<meta name="keywords" content="Scaling by the Base (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Floating-Point-in-Depth.html" rel="up" title="Floating Point in Depth">
+<link href="Rounding-Control.html" rel="next" title="Rounding Control">
+<link href="Signed-Zeros.html" rel="prev" title="Signed Zeros">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Scaling-by-the-Base"></span><div class="header">
+<p>
+Next: <a href="Rounding-Control.html" accesskey="n" rel="next">Rounding Control</a>, Previous: <a href="Signed-Zeros.html" accesskey="p" rel="prev">Signed Zeros</a>, Up: <a href="Floating-Point-in-Depth.html" accesskey="u" rel="up">Floating Point in Depth</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>
+</div>
+<hr>
+<span id="Scaling-by-Powers-of-the-Base"></span><h3 class="section">28.16 Scaling by Powers of the Base</h3>
+<span id="index-scaling-floating-point-by-powers-of-the-base"></span>
+<span id="index-floating_002dpoint-scaling-by-powers-of-the-base"></span>
+
+<p>We have discussed rounding errors several times in this chapter,
+but it is important to remember that when results require no more
+bits than the exponent and significand bits can represent, those results
+are <em>exact</em>.
+</p>
+<p>One particularly useful exact operation is scaling by a power of
+the base.  While one, in principle, could do that with code like
+this:
+</p>
+<div class="example">
+<pre class="example">y = x * pow (2.0, (double)k);   /* <span class="roman">Undesirable scaling: avoid!</span> */
+</pre></div>
+
+<p>that is not advisable, because it relies on the quality of the
+math-library power function, and that happens to be one of the
+most difficult functions in the C math library to make accurate.
+What is likely to happen on many systems is that the returned
+value from <code>pow</code> will be close to a power of two, but
+slightly different, so the subsequent multiplication introduces
+rounding error.
+</p>
+<p>The correct, and fastest, way to do the scaling is either via the
+traditional C library function, or with its C99 equivalent:
+</p>
+<div class="example">
+<pre class="example">y = ldexp (x, k);            /* <span class="roman">Traditional pre-C99 style.</span> */
+y = scalbn (x, k);           /* <span class="roman">C99 style.</span> */
+</pre></div>
+
+<p>Both functions return <code>x * 2**k</code>.
+See <a href="https://www.gnu.org/software/libc/manual/html_node/Normalization-Functions.html#Normalization-Functions">Normalization Functions</a> in <cite>The GNU C Library Reference Manual</cite>.
+</p>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Scope.html
===================================================================
--- public/doc/gnu-c/Scope.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Scope.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,209 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Scope (GNU C Language Manual)</title>
+
+<meta name="description" content="Scope (GNU C Language Manual)">
+<meta name="keywords" content="Scope (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html" rel="up" title="Top">
+<link href="Preprocessing.html" rel="next" title="Preprocessing">
+<link href="Common-Type.html" rel="prev" title="Common Type">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Scope"></span><div class="header">
+<p>
+Next: <a href="Preprocessing.html" accesskey="n" rel="next">Preprocessing</a>, Previous: <a href="Type-Conversions.html" accesskey="p" rel="prev">Type Conversions</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</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>
+</div>
+<hr>
+<span id="Scope-1"></span><h2 class="chapter">25 Scope</h2>
+<span id="index-scope"></span>
+<span id="index-block-scope"></span>
+<span id="index-function-scope"></span>
+<span id="index-function-prototype-scope"></span>
+
+<p>Each definition or declaration of an identifier is visible
+in certain parts of the program, which is typically less than the whole
+of the program.  The parts where it is visible are called its <em>scope</em>.
+</p>
+<p>Normally, declarations made at the top-level in the source &ndash; that is,
+not within any blocks and function definitions &ndash; are visible for the
+entire contents of the source file after that point.  This is called
+<em>file scope</em> (see <a href="File_002dScope-Variables.html">File-Scope Variables</a>).
+</p>
+<p>Declarations made within blocks of code, including within function
+definitions, are visible only within those blocks.  This is called
+<em>block scope</em>.  Here is an example:
+</p>
+<div class="example">
+<pre class="example">void
+foo (void)
+{
+  int x = 42;
+}
+</pre></div>
+
+<p>In this example, the variable <code>x</code> has block scope; it is visible
+only within the <code>foo</code> function definition block.  Thus, other
+blocks could have their own variables, also named <code>x</code>, without
+any conflict between those variables.
+</p>
+<p>A variable declared inside a subblock has a scope limited to
+that subblock, 
+</p>
+<div class="example">
+<pre class="example">void
+foo (void)
+{
+  {
+    int x = 42;
+  }
+  // <span class="roman"><code>x</code> is out of scope here.</span>
+}
+</pre></div>
+
+<p>If a variable declared within a block has the same name as a variable
+declared outside of that block, the definition within the block
+takes precedence during its scope:
+</p>
+<div class="example">
+<pre class="example">int x = 42;
+
+void
+foo (void)
+{
+  int x = 17;
+  printf (&quot;%d\n&quot;, x);
+}
+</pre></div>
+
+<p>This prints 17, the value of the variable <code>x</code> declared in the
+function body block, rather than the value of the variable <code>x</code> at
+file scope.  We say that the inner declaration of <code>x</code>
+<em>shadows</em> the outer declaration, for the extent of the inner
+declaration&rsquo;s scope.
+</p>
+<p>A declaration with block scope can be shadowed by another declaration
+with the same name in a subblock.
+</p>
+<div class="example">
+<pre class="example">void
+foo (void)
+{
+  char *x = &quot;foo&quot;;
+  {
+    int x = 42;
+    <span class="roman">&hellip;</span>
+    exit (x / 6);
+  }
+}
+</pre></div>
+
+<p>A function parameter&rsquo;s scope is the entire function body, but it can
+be shadowed.  For example:
+</p>
+<div class="example">
+<pre class="example">int x = 42;
+
+void
+foo (int x)
+{
+  printf (&quot;%d\n&quot;, x);
+}
+</pre></div>
+
+<p>This prints the value of <code>x</code> the function parameter, rather than
+the value of the file-scope variable <code>x</code>.  However, 
+</p>
+<p>Labels (see <a href="goto-Statement.html">goto Statement</a>) have <em>function</em> scope: each label
+is visible for the whole of the containing function body, both before
+and after the label declaration:
+</p>
+<div class="example">
+<pre class="example">void
+foo (void)
+{
+  <span class="roman">&hellip;</span>
+  goto bar;
+  <span class="roman">&hellip;</span>
+  {  // <span class="roman">Subblock does not affect labels.</span>
+    bar:
+    <span class="roman">&hellip;</span>
+  }
+  goto bar;
+}
+</pre></div>
+
+<p>Except for labels, a declared identifier is not
+visible to code before its declaration.  For example:
+</p>
+<div class="example">
+<pre class="example">int x = 5;
+int y = x + 10;
+</pre></div>
+
+<p>will work, but:
+</p>
+<div class="example">
+<pre class="example">int x = y + 10;
+int y = 5;
+</pre></div>
+
+<p>cannot refer to the variable <code>y</code> before its declaration.
+</p>
+
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Preprocessing.html" accesskey="n" rel="next">Preprocessing</a>, Previous: <a href="Type-Conversions.html" accesskey="p" rel="prev">Type Conversions</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Search-Path.html
===================================================================
--- public/doc/gnu-c/Search-Path.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Search-Path.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,131 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Search Path (GNU C Language Manual)</title>
+
+<meta name="description" content="Search Path (GNU C Language Manual)">
+<meta name="keywords" content="Search Path (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Header-Files.html" rel="up" title="Header Files">
+<link href="Once_002dOnly-Headers.html" rel="next" title="Once-Only Headers">
+<link href="include-Operation.html" rel="prev" title="include Operation">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Search-Path"></span><div class="header">
+<p>
+Next: <a href="Once_002dOnly-Headers.html" accesskey="n" rel="next">Once-Only Headers</a>, Previous: <a href="include-Operation.html" accesskey="p" rel="prev">include Operation</a>, Up: <a href="Header-Files.html" accesskey="u" rel="up">Header Files</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>
+</div>
+<hr>
+<span id="Search-Path-1"></span><h4 class="subsection">26.4.3 Search Path</h4>
+
+<p>GCC looks in several different places for header files to be included.
+On the GNU system, and Unix systems, the default directories for
+system header files are:
+</p>
+<div class="example">
+<pre class="example"><var>libdir</var>/gcc/<var>target</var>/<var>version</var>/include
+/usr/local/include
+<var>libdir</var>/gcc/<var>target</var>/<var>version</var>/include-fixed
+<var>libdir</var>/<var>target</var>/include
+/usr/include/<var>target</var>
+/usr/include
+</pre></div>
+
+<p>The list may be different in some operating systems.  Other
+directories are added for C++.
+</p>
+<p>In the above, <var>target</var> is the canonical name of the system GCC was
+configured to compile code for; often but not always the same as the
+canonical name of the system it runs on.  <var>version</var> is the version
+of GCC in use.
+</p>
+<p>You can add to this list with the <samp>-I<var>dir</var></samp> command-line
+option.  All the directories named by <samp>-I</samp> are searched, in
+left-to-right order, <em>before</em> the default directories.  The only
+exception is when <samp>dir</samp> is already searched by default.  In
+this case, the option is ignored and the search order for system
+directories remains unchanged.
+</p>
+<p>Duplicate directories are removed from the quote and bracket search
+chains before the two chains are merged to make the final search chain.
+Thus, it is possible for a directory to occur twice in the final search
+chain if it was specified in both the quote and bracket chains.
+</p>
+<p>You can prevent GCC from searching any of the default directories with
+the <samp>-nostdinc</samp> option.  This is useful when you are compiling an
+operating system kernel or some other program that does not use the
+standard C library facilities, or the standard C library itself.
+<samp>-I</samp> options are not ignored as described above when
+<samp>-nostdinc</samp> is in effect.
+</p>
+<p>GCC looks for headers requested with <code>#include&nbsp;&quot;<var>file</var>&quot;<!-- /@w --></code>
+first in the directory containing the current file, then in the
+<em>quote directories</em> specified by <samp>-iquote</samp> options, then in
+the same places it looks for a system header.  For example, if
+<samp>/usr/include/sys/stat.h</samp> contains <code>#include&nbsp;&quot;types.h&quot;<!-- /@w --></code>,
+GCC looks for <samp>types.h</samp> first in <samp>/usr/include/sys</samp>, then in
+the quote directories and then in its usual search path.
+</p>
+<p><code>#line</code> (see <a href="Line-Control.html">Line Control</a>) does not change GCC&rsquo;s idea of the
+directory containing the current file.
+</p>
+<span id="index-quote-directories"></span>
+<p>The <samp>-I-</samp> is an old-fashioned, deprecated way to specify the
+quote directories.  To look for headers in a directory named <samp>-</samp>,
+specify <samp>-I./-</samp>.  There are several more ways to adjust the
+header search path.  See <a href="https://gcc.gnu.org/onlinedocs/gcc/invocation.html#invocation">Invoking GCC</a> in <cite>Using the GNU Compiler Collection</cite>.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Once_002dOnly-Headers.html" accesskey="n" rel="next">Once-Only Headers</a>, Previous: <a href="include-Operation.html" accesskey="p" rel="prev">include Operation</a>, Up: <a href="Header-Files.html" accesskey="u" rel="up">Header Files</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Self_002dReferential-Macros.html
===================================================================
--- public/doc/gnu-c/Self_002dReferential-Macros.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Self_002dReferential-Macros.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,139 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Self-Referential Macros (GNU C Language Manual)</title>
+
+<meta name="description" content="Self-Referential Macros (GNU C Language Manual)">
+<meta name="keywords" content="Self-Referential Macros (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Macro-Pitfalls.html" rel="up" title="Macro Pitfalls">
+<link href="Argument-Prescan.html" rel="next" title="Argument Prescan">
+<link href="Macros-and-Auto-Type.html" rel="prev" title="Macros and Auto Type">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Self_002dReferential-Macros"></span><div class="header">
+<p>
+Next: <a href="Argument-Prescan.html" accesskey="n" rel="next">Argument Prescan</a>, Previous: <a href="Macros-and-Auto-Type.html" accesskey="p" rel="prev">Macros and Auto Type</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>
+</div>
+<hr>
+<span id="Self_002dReferential-Macros-1"></span><h4 class="subsubsection">26.5.10.6 Self-Referential Macros</h4>
+<span id="index-self_002dreference"></span>
+
+<p>A <em>self-referential</em> macro is one whose name appears in its
+definition.  Recall that all macro definitions are rescanned for more
+macros to replace.  If the self-reference were considered a use of the
+macro, it would produce an infinitely large expansion.  To prevent
+this, the self-reference is not considered a macro call: preprocessing
+leaves it unchanged.  Consider an example:
+</p>
+<div class="example">
+<pre class="example">#define foo (4 + foo)
+</pre></div>
+
+<p>where <code>foo</code> is also a variable in your program.
+</p>
+<p>Following the ordinary rules, each reference to <code>foo</code> will expand
+into <code>(4 + foo)</code>; then this will be rescanned and will expand into
+<code>(4 + (4 + foo))</code>; and so on until the computer runs out of memory.
+</p>
+<p>The self-reference rule cuts this process short after one step, at
+<code>(4 + foo)</code>.  Therefore, this macro definition has the possibly
+useful effect of causing the program to add 4 to the value of <code>foo</code>
+wherever <code>foo</code> is referred to.
+</p>
+<p>In most cases, it is a bad idea to take advantage of this feature.  A
+person reading the program who sees that <code>foo</code> is a variable will
+not expect that it is a macro as well.  The reader will come across the
+identifier <code>foo</code> in the program and think its value should be that
+of the variable <code>foo</code>, whereas in fact the value is four greater.
+</p>
+<p>It is useful to make a macro definition that expands to the macro
+name itself.  If you write
+</p>
+<div class="example">
+<pre class="example">#define EPERM EPERM
+</pre></div>
+
+<p>then the macro <code>EPERM</code> expands to <code>EPERM</code>.  Effectively,
+preprocessing leaves it unchanged in the source code.  You can tell
+that it&rsquo;s a macro with <code>#ifdef</code>.  You might do this if you want
+to define numeric constants with an <code>enum</code>, but have
+<code>#ifdef</code> be true for each constant.
+</p>
+<p>If a macro <code>x</code> expands to use a macro <code>y</code>, and the expansion of
+<code>y</code> refers to the macro <code>x</code>, that is an <em>indirect
+self-reference</em> of <code>x</code>.  <code>x</code> is not expanded in this case
+either.  Thus, if we have
+</p>
+<div class="example">
+<pre class="example">#define x (4 + y)
+#define y (2 * x)
+</pre></div>
+
+<p>then <code>x</code> and <code>y</code> expand as follows:
+</p>
+<div class="example">
+<pre class="example">x    &rarr; (4 + y)
+     &rarr; (4 + (2 * x))
+
+y    &rarr; (2 * x)
+     &rarr; (2 * (4 + y))
+</pre></div>
+
+<p>Each macro is expanded when it appears in the definition of the other
+macro, but not when it indirectly appears in its own definition.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Argument-Prescan.html" accesskey="n" rel="next">Argument Prescan</a>, Previous: <a href="Macros-and-Auto-Type.html" accesskey="p" rel="prev">Macros and Auto Type</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Sequence-Points.html
===================================================================
--- public/doc/gnu-c/Sequence-Points.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Sequence-Points.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,117 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Sequence Points (GNU C Language Manual)</title>
+
+<meta name="description" content="Sequence Points (GNU C Language Manual)">
+<meta name="keywords" content="Sequence Points (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Order-of-Execution.html" rel="up" title="Order of Execution">
+<link href="Postincrement-and-Ordering.html" rel="next" title="Postincrement and Ordering">
+<link href="Associativity-and-Ordering.html" rel="prev" title="Associativity and Ordering">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Sequence-Points"></span><div class="header">
+<p>
+Next: <a href="Postincrement-and-Ordering.html" accesskey="n" rel="next">Postincrement and Ordering</a>, Previous: <a href="Associativity-and-Ordering.html" accesskey="p" rel="prev">Associativity and Ordering</a>, Up: <a href="Order-of-Execution.html" accesskey="u" rel="up">Order of Execution</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>
+</div>
+<hr>
+<span id="Sequence-Points-1"></span><h3 class="section">10.3 Sequence Points</h3>
+<span id="index-sequence-points"></span>
+<span id="index-full-expression"></span>
+
+<p>There are some points in the code where C makes limited guarantees
+about the order of operations.  These are called <em>sequence
+points</em>.  Here is where they occur:
+</p>
+<ul>
+<li> At the end of a <em>full expression</em>; that is to say, an expression
+that is not part of a larger expression.  All side effects specified
+by that expression are carried out before execution moves
+on to subsequent code.
+
+</li><li> At the end of the first operand of certain operators: &lsquo;<samp>,</samp>&rsquo;,
+&lsquo;<samp>&amp;&amp;</samp>&rsquo;, &lsquo;<samp>||</samp>&rsquo;, and &lsquo;<samp>?:</samp>&rsquo;.  All side effects specified by
+that expression are carried out before any execution of the
+next operand.
+
+<p>The commas that separate arguments in a function call are <em>not</em>
+comma operators, and they do not create sequence points.  The rule
+for function arguments and the rule for operands are different
+(see <a href="Ordering-of-Operands.html">Ordering of Operands</a>).
+</p>
+</li><li> Just before calling a function.  All side effects specified by the
+argument expressions are carried out before calling the function.
+
+<p>If the function to be called is not constant&mdash;that is, if it is
+computed by an expression&mdash;all side effects in that expression are
+carried out before calling the function.
+</p></li></ul>
+
+<p>The ordering imposed by a sequence point applies locally to a limited
+range of code, as stated above in each case.  For instance, the
+ordering imposed by the comma operator does not apply to code outside
+that comma operator.  Thus, in this code,
+</p>
+<div class="example">
+<pre class="example">(x = 5, foo (x)) + x * x
+</pre></div>
+
+<p>the sequence point of the comma operator orders <code>x = 5</code> before
+<code>foo (x)</code>, but <code>x * x</code> could be computed before or after
+them.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Postincrement-and-Ordering.html" accesskey="n" rel="next">Postincrement and Ordering</a>, Previous: <a href="Associativity-and-Ordering.html" accesskey="p" rel="prev">Associativity and Ordering</a>, Up: <a href="Order-of-Execution.html" accesskey="u" rel="up">Order of Execution</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Severity-Pragmas.html
===================================================================
--- public/doc/gnu-c/Severity-Pragmas.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Severity-Pragmas.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,151 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Severity Pragmas (GNU C Language Manual)</title>
+
+<meta name="description" content="Severity Pragmas (GNU C Language Manual)">
+<meta name="keywords" content="Severity Pragmas (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Pragmas.html" rel="up" title="Pragmas">
+<link href="Optimization-Pragmas.html" rel="next" title="Optimization Pragmas">
+<link href="Pragma-Basics.html" rel="prev" title="Pragma Basics">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Severity-Pragmas"></span><div class="header">
+<p>
+Next: <a href="Optimization-Pragmas.html" accesskey="n" rel="next">Optimization Pragmas</a>, Previous: <a href="Pragma-Basics.html" accesskey="p" rel="prev">Pragma Basics</a>, Up: <a href="Pragmas.html" accesskey="u" rel="up">Pragmas</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>
+</div>
+<hr>
+<span id="Severity-Pragmas-1"></span><h4 class="subsection">30.1.2 Severity Pragmas</h4>
+
+<p>These pragmas control the severity of classes of diagnostics.
+You can specify the class of diagnostic with the GCC option that causes
+those diagnostics to be generated.
+</p>
+<dl compact="compact">
+<dt><code>#pragma GCC diagnostic error <var>option</var></code></dt>
+<dt><code>_Pragma (&quot;GCC diagnostic error <var>option</var>&quot;)</code></dt>
+<dd><p>For code following this pragma, treat diagnostics of the variety
+specified by <var>option</var> as errors.  For example:
+</p>
+<div class="example">
+<pre class="example">_Pragma (&quot;GCC diagnostic error -Wformat&quot;)
+</pre></div>
+
+<p>specifies to treat diagnostics enabled by the <var>-Wformat</var> option
+as errors rather than warnings.
+</p>
+</dd>
+<dt><code>#pragma GCC diagnostic warning <var>option</var></code></dt>
+<dt><code>_Pragma (&quot;GCC diagnostic warning <var>option</var>&quot;)</code></dt>
+<dd><p>For code following this pragma, treat diagnostics of the variety
+specified by <var>option</var> as warnings.  This overrides the
+<var>-Werror</var> option which says to treat warnings as errors.
+</p>
+</dd>
+<dt><code>#pragma GCC diagnostic ignore <var>option</var></code></dt>
+<dt><code>_Pragma (&quot;GCC diagnostic ignore <var>option</var>&quot;)</code></dt>
+<dd><p>For code following this pragma, refrain from reporting any diagnostics
+of the variety specified by <var>option</var>.
+</p>
+</dd>
+<dt><code>#pragma GCC diagnostic push</code></dt>
+<dt><code>_Pragma (&quot;GCC diagnostic push&quot;)</code></dt>
+<dt><code>#pragma GCC diagnostic pop</code></dt>
+<dt><code>_Pragma (&quot;GCC diagnostic pop&quot;)</code></dt>
+<dd><p>These pragmas maintain a stack of states for severity settings.
+&lsquo;<samp>GCC diagnostic push</samp>&rsquo; saves the current settings on the stack,
+and &lsquo;<samp>GCC diagnostic pop</samp>&rsquo; pops the last stack item and restores
+the current settings from that.
+</p>
+<p>&lsquo;<samp>GCC diagnostic pop</samp>&rsquo; when the severity setting stack is empty
+restores the settings to what they were at the start of compilation.
+</p>
+<p>Here is an example:
+</p>
+<div class="example">
+<pre class="example">_Pragma (&quot;GCC diagnostic error -Wformat&quot;)
+
+/* <span class="roman"><samp>-Wformat</samp> messages treated as errors. </span> */
+
+_Pragma (&quot;GCC diagnostic push&quot;)
+_Pragma (&quot;GCC diagnostic warning -Wformat&quot;)
+
+/* <span class="roman"><samp>-Wformat</samp> messages treated as warnings. </span> */
+
+_Pragma (&quot;GCC diagnostic push&quot;)
+_Pragma (&quot;GCC diagnostic ignored -Wformat&quot;)
+
+/* <span class="roman"><samp>-Wformat</samp> messages suppressed. </span> */
+
+_Pragma (&quot;GCC diagnostic pop&quot;)
+
+/* <span class="roman"><samp>-Wformat</samp> messages treated as warnings again. </span> */
+
+_Pragma (&quot;GCC diagnostic pop&quot;)
+
+/* <span class="roman"><samp>-Wformat</samp> messages treated as errors again. </span> */
+
+/* <span class="roman">This is an excess &lsquo;<samp>pop</samp>&rsquo; that matches no &lsquo;<samp>push</samp>&rsquo;. </span> */
+_Pragma (&quot;GCC diagnostic pop&quot;)
+
+/* <span class="roman"><samp>-Wformat</samp> messages treated once again</span>
+   <span class="roman">as specified by the GCC command-line options.</span>  */
+</pre></div>
+</dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Optimization-Pragmas.html" accesskey="n" rel="next">Optimization Pragmas</a>, Previous: <a href="Pragma-Basics.html" accesskey="p" rel="prev">Pragma Basics</a>, Up: <a href="Pragmas.html" accesskey="u" rel="up">Pragmas</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Shift-Caveats.html
===================================================================
--- public/doc/gnu-c/Shift-Caveats.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Shift-Caveats.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,94 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Shift Caveats (GNU C Language Manual)</title>
+
+<meta name="description" content="Shift Caveats (GNU C Language Manual)">
+<meta name="keywords" content="Shift Caveats (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Shift-Operations.html" rel="up" title="Shift Operations">
+<link href="Shift-Hacks.html" rel="next" title="Shift Hacks">
+<link href="Bits-Shifted-In.html" rel="prev" title="Bits Shifted In">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Shift-Caveats"></span><div class="header">
+<p>
+Next: <a href="Shift-Hacks.html" accesskey="n" rel="next">Shift Hacks</a>, Previous: <a href="Bits-Shifted-In.html" accesskey="p" rel="prev">Bits Shifted In</a>, Up: <a href="Shift-Operations.html" accesskey="u" rel="up">Shift Operations</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>
+</div>
+<hr>
+<span id="Caveats-for-Shift-Operations"></span><h4 class="subsection">6.7.2 Caveats for Shift Operations</h4>
+
+<p><strong>Warning:</strong> If the shift count is greater than or equal to the
+width in bits of the first operand, the results are machine-dependent.
+Logically speaking, the &ldquo;correct&rdquo; value would be either -1 (for
+right shift of a negative number) or 0 (in all other cases), but what
+it really generates is whatever the machine&rsquo;s shift instruction does in
+that case.  So unless you can prove that the second operand is not too
+large, write code to check it at run time.
+</p>
+<p><strong>Warning:</strong> Never rely on how the shift operators relate in
+precedence to other arithmetic binary operators.  Programmers don&rsquo;t
+remember these precedences, and won&rsquo;t understand the code.  Always use
+parentheses to explicitly specify the nesting, like this:
+</p>
+<div class="example">
+<pre class="example">a + (b &lt;&lt; 5)   /* <span class="roman">Shift first, then add.</span>  */
+(a + b) &lt;&lt; 5   /* <span class="roman">Add first, then shift.</span>  */
+</pre></div>
+
+<p>Note: according to the C standard, shifting of signed values isn&rsquo;t
+guaranteed to work properly when the value shifted is negative, or
+becomes negative during the operation of shifting left.  However, only
+pedants have a reason to be concerned about this; only computers with
+strange shift instructions could plausibly do this wrong.  In GNU C,
+the operation always works as expected,
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Shift-Hacks.html
===================================================================
--- public/doc/gnu-c/Shift-Hacks.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Shift-Hacks.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,96 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Shift Hacks (GNU C Language Manual)</title>
+
+<meta name="description" content="Shift Hacks (GNU C Language Manual)">
+<meta name="keywords" content="Shift Hacks (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Shift-Operations.html" rel="up" title="Shift Operations">
+<link href="Bitwise-Operations.html" rel="next" title="Bitwise Operations">
+<link href="Shift-Caveats.html" rel="prev" title="Shift Caveats">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Shift-Hacks"></span><div class="header">
+<p>
+Previous: <a href="Shift-Caveats.html" accesskey="p" rel="prev">Shift Caveats</a>, Up: <a href="Shift-Operations.html" accesskey="u" rel="up">Shift Operations</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>
+</div>
+<hr>
+<span id="Shift-Hacks-1"></span><h4 class="subsection">6.7.3 Shift Hacks</h4>
+
+<p>You can use the shift operators for various useful hacks.  For
+example, given a date specified by day of the month <code>d</code>, month
+<code>m</code>, and year <code>y</code>, you can store the entire date in a single
+integer <code>date</code>:
+</p>
+<div class="example">
+<pre class="example">unsigned int d = 12;
+unsigned int m = 6;
+unsigned int y = 1983;
+unsigned int date = ((y &lt;&lt; 4) + m) &lt;&lt; 5) + d;
+</pre></div>
+
+<p>To extract the original day, month, and year out of
+<code>date</code>, use a combination of shift and remainder.
+</p>
+<div class="example">
+<pre class="example">d = date % 32;
+m = (date &gt;&gt; 5) % 16;
+y = date &gt;&gt; 9;
+</pre></div>
+
+<p><code>-1 &lt;&lt; LOWBITS</code> is a clever way to make an integer whose
+<code>LOWBITS</code> lowest bits are all 0 and the rest are all 1.
+<code>-(1 &lt;&lt; LOWBITS)</code> is equivalent to that, due to associativity of
+multiplication, since negating a value is equivalent to multiplying it
+by -1.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Shift-Operations.html
===================================================================
--- public/doc/gnu-c/Shift-Operations.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Shift-Operations.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,101 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Shift Operations (GNU C Language Manual)</title>
+
+<meta name="description" content="Shift Operations (GNU C Language Manual)">
+<meta name="keywords" content="Shift Operations (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Arithmetic.html" rel="up" title="Arithmetic">
+<link href="Bits-Shifted-In.html" rel="next" title="Bits Shifted In">
+<link href="Numeric-Comparisons.html" rel="prev" title="Numeric Comparisons">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Shift-Operations"></span><div class="header">
+<p>
+Next: <a href="Bitwise-Operations.html" accesskey="n" rel="next">Bitwise Operations</a>, Previous: <a href="Numeric-Comparisons.html" accesskey="p" rel="prev">Numeric Comparisons</a>, Up: <a href="Arithmetic.html" accesskey="u" rel="up">Arithmetic</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>
+</div>
+<hr>
+<span id="Shift-Operations-1"></span><h3 class="section">6.7 Shift Operations</h3>
+<span id="index-shift-operators"></span>
+<span id="index-operators_002c-shift"></span>
+<span id="index-operators_002c-shift-1"></span>
+<span id="index-shift-count"></span>
+
+<p><em>Shifting</em> an integer means moving the bit values to the left or
+right within the bits of the data type.  Shifting is defined only for
+integers.  Here&rsquo;s the way to write it:
+</p>
+<div class="example">
+<pre class="example">/* <span class="roman">Left shift.</span>  */
+5 &lt;&lt; 2 &rArr; 20
+
+/* <span class="roman">Right shift.</span>  */
+5 &gt;&gt; 2 &rArr; 1
+</pre></div>
+
+<p>The left operand is the value to be shifted, and the right operand
+says how many bits to shift it (the <em>shift count</em>).  The left
+operand is promoted (see <a href="Operand-Promotions.html">Operand Promotions</a>), so shifting never
+operates on a narrow integer type; it&rsquo;s always either <code>int</code> or
+wider.  The value of the shift operator has the same type as the
+promoted left operand.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Bits-Shifted-In.html" accesskey="1">Bits Shifted In</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How shifting makes new bits to shift in.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Shift-Caveats.html" accesskey="2">Shift Caveats</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Caveats of shift operations.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Shift-Hacks.html" accesskey="3">Shift Hacks</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Clever tricks with shift operations.
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Signals.html
===================================================================
--- public/doc/gnu-c/Signals.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Signals.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,112 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Signals (GNU C Language Manual)</title>
+
+<meta name="description" content="Signals (GNU C Language Manual)">
+<meta name="keywords" content="Signals (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html" rel="up" title="Top">
+<link href="GNU-Free-Documentation-License.html" rel="next" title="GNU Free Documentation License">
+<link href="Attributes.html" rel="prev" title="Attributes">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Signals"></span><div class="header">
+<p>
+Next: <a href="GNU-Free-Documentation-License.html" accesskey="n" rel="next">GNU Free Documentation License</a>, Previous: <a href="Attributes.html" accesskey="p" rel="prev">Attributes</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</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>
+</div>
+<hr>
+<span id="Signals-1"></span><h2 class="appendix">Appendix E Signals</h2>
+<span id="index-signal"></span>
+<span id="index-handler-_0028for-signal_0029"></span>
+<span id="index-SIGSEGV"></span>
+<span id="index-SIGFPE"></span>
+<span id="index-SIGBUS"></span>
+
+<p>Some program operations bring about an error condition called a
+<em>signal</em>.  These signals terminate the program, by default.
+</p>
+<p>There are various different kinds of signals, each with a name.  We
+have seen several such error conditions through this manual:
+</p>
+<dl compact="compact">
+<dt><code>SIGSEGV</code></dt>
+<dd><p>This signal is generated when a program tries to read or write outside
+the memory that is allocated for it, or to write memory that can only
+be read.  The name is an abbreviation for &ldquo;segmentation violation&rdquo;.
+</p>
+</dd>
+<dt><code>SIGFPE</code></dt>
+<dd><p>This signal indicates a fatal arithmetic error.  The name is an
+abbreviation for &ldquo;floating-point exception&rdquo;, but covers all types of
+arithmetic errors, including division by zero and overflow.
+</p>
+</dd>
+<dt><code>SIGBUS</code></dt>
+<dd><p>This signal is generated when an invalid pointer is dereferenced,
+typically the result of dereferencing an uninintalized pointer.  It is
+similar to <code>SIGSEGV</code>, except that <code>SIGSEGV</code> indicates
+invalid access to valid memory, while <code>SIGBUS</code> indicates an
+attempt to access an invalid address.
+</p></dd>
+</dl>
+
+<p>These kinds of signal allow the program to specify a function as a
+<em>signal handler</em>.  When a signal has a handler, it doesn&rsquo;t
+terminate the program; instead it calls the handler.
+</p>
+<p>There are many other kinds of signal; here we list only those that
+come from run-time errors in C operations.  The rest have to do with
+the functioning of the operating system.  The GNU C Library Reference
+Manual gives more explanation about signals (see <a href="https://www.gnu.org/software/libc/manual/html_node/Program-Signal-Handling.html#Program-Signal-Handling">The GNU C Library</a> in <cite>The GNU C Library Reference
+Manual</cite>).
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Signed-Overflow.html
===================================================================
--- public/doc/gnu-c/Signed-Overflow.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Signed-Overflow.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,137 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Signed Overflow (GNU C Language Manual)</title>
+
+<meta name="description" content="Signed Overflow (GNU C Language Manual)">
+<meta name="keywords" content="Signed Overflow (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Integer-Overflow.html" rel="up" title="Integer Overflow">
+<link href="Mixed-Mode.html" rel="next" title="Mixed Mode">
+<link href="Unsigned-Overflow.html" rel="prev" title="Unsigned Overflow">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Signed-Overflow"></span><div class="header">
+<p>
+Previous: <a href="Unsigned-Overflow.html" accesskey="p" rel="prev">Unsigned Overflow</a>, Up: <a href="Integer-Overflow.html" accesskey="u" rel="up">Integer Overflow</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>
+</div>
+<hr>
+<span id="Overflow-with-Signed-Integers"></span><h4 class="subsection">6.3.2 Overflow with Signed Integers</h4>
+<span id="index-compiler-options-for-integer-overflow"></span>
+<span id="index-integer-overflow_002c-compiler-options"></span>
+<span id="index-overflow_002c-compiler-options"></span>
+
+<p>For signed integers, the result of overflow in C is <em>in
+principle</em> undefined, meaning that anything whatsoever could happen.
+Therefore, C compilers can do optimizations that treat the overflow
+case with total unconcern.  (Since the result of overflow is undefined
+in principle, one cannot claim that these optimizations are
+erroneous.)
+</p>
+<p><strong>Watch out:</strong> These optimizations can do surprising things.  For
+instance,
+</p>
+<div class="example">
+<pre class="example">int i;
+<span class="roman">&hellip;</span>
+if (i &lt; i + 1)
+  x = 5;
+</pre></div>
+
+<p>could be optimized to do the assignment unconditionally, because the
+<code>if</code>-condition is always true if <code>i + 1</code> does not overflow.
+</p>
+<p>GCC offers compiler options to control handling signed integer
+overflow.  These options operate per module; that is, each module
+behaves according to the options it was compiled with.
+</p>
+<p>These two options specify particular ways to handle signed integer
+overflow, other than the default way:
+</p>
+<dl compact="compact">
+<dt><samp>-fwrapv</samp></dt>
+<dd><p>Make signed integer operations well-defined, like unsigned integer
+operations: they produce the <var>n</var> low-order bits of the true
+result.  The highest of those <var>n</var> bits is the sign bit of the
+result.  With <samp>-fwrapv</samp>, these out-of-range operations are not
+considered overflow, so (strictly speaking) integer overflow never
+happens.
+</p>
+<p>The option <samp>-fwrapv</samp> enables some optimizations based on the
+defined values of out-of-range results.  In GCC 8, it disables
+optimizations that are based on assuming signed integer operations
+will not overflow.
+</p>
+</dd>
+<dt><samp>-ftrapv</samp></dt>
+<dd><p>Generate a signal <code>SIGFPE</code> when signed integer overflow occurs.
+This terminates the program unless the program handles the signal.
+See <a href="Signals.html">Signals</a>.
+</p></dd>
+</dl>
+
+<p>One other option is useful for finding where overflow occurs:
+</p>
+
+<dl compact="compact">
+<dt><samp>-fsanitize=signed-integer-overflow</samp></dt>
+<dd><p>Output a warning message at run time when signed integer overflow
+occurs.  This checks the &lsquo;<samp>+</samp>&rsquo;, &lsquo;<samp>*</samp>&rsquo;, and &lsquo;<samp>-</samp>&rsquo; operators.
+This takes priority over <samp>-ftrapv</samp>.
+</p></dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Previous: <a href="Unsigned-Overflow.html" accesskey="p" rel="prev">Unsigned Overflow</a>, Up: <a href="Integer-Overflow.html" accesskey="u" rel="up">Integer Overflow</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Signed-Zeros.html
===================================================================
--- public/doc/gnu-c/Signed-Zeros.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Signed-Zeros.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,83 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Signed Zeros (GNU C Language Manual)</title>
+
+<meta name="description" content="Signed Zeros (GNU C Language Manual)">
+<meta name="keywords" content="Signed Zeros (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Floating-Point-in-Depth.html" rel="up" title="Floating Point in Depth">
+<link href="Scaling-by-the-Base.html" rel="next" title="Scaling by the Base">
+<link href="Handling-NaN.html" rel="prev" title="Handling NaN">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Signed-Zeros"></span><div class="header">
+<p>
+Next: <a href="Scaling-by-the-Base.html" accesskey="n" rel="next">Scaling by the Base</a>, Previous: <a href="Handling-NaN.html" accesskey="p" rel="prev">Handling NaN</a>, Up: <a href="Floating-Point-in-Depth.html" accesskey="u" rel="up">Floating Point in Depth</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>
+</div>
+<hr>
+<span id="Signed-Zeros-1"></span><h3 class="section">28.15 Signed Zeros</h3>
+<span id="index-signed-zeros-in-floating_002dpoint-arithmetic"></span>
+<span id="index-floating_002dpoint-signed-zeros"></span>
+
+<p>The sign of zero is significant, and important, because it records the
+creation of a value that is too small to represent, but came from
+either the negative axis, or from the positive axis.  Such fine
+distinctions are essential for proper handling of <em>branch cuts</em>
+in complex arithmetic (see <a href="Complex-Arithmetic.html">Complex Arithmetic</a>).
+</p>
+<p>The key point about signed zeros is that in comparisons, their sign
+does not matter: <code>0.0 == -0.0</code> must <em>always</em> evaluate to
+<code>1</code> (true).  However, they are not <em>the same number</em>, and
+<code>-0.0</code> in C code stands for a negative zero.
+</p>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Signed-and-Unsigned-Types.html
===================================================================
--- public/doc/gnu-c/Signed-and-Unsigned-Types.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Signed-and-Unsigned-Types.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,107 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Signed and Unsigned Types (GNU C Language Manual)</title>
+
+<meta name="description" content="Signed and Unsigned Types (GNU C Language Manual)">
+<meta name="keywords" content="Signed and Unsigned Types (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Integer-Types.html" rel="up" title="Integer Types">
+<link href="Narrow-Integers.html" rel="next" title="Narrow Integers">
+<link href="Basic-Integers.html" rel="prev" title="Basic Integers">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Signed-and-Unsigned-Types"></span><div class="header">
+<p>
+Next: <a href="Narrow-Integers.html" accesskey="n" rel="next">Narrow Integers</a>, Previous: <a href="Basic-Integers.html" accesskey="p" rel="prev">Basic Integers</a>, Up: <a href="Integer-Types.html" accesskey="u" rel="up">Integer Types</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>
+</div>
+<hr>
+<span id="Signed-and-Unsigned-Types-1"></span><h4 class="subsection">11.1.2 Signed and Unsigned Types</h4>
+<span id="index-signed-types"></span>
+<span id="index-unsigned-types"></span>
+<span id="index-types_002c-signed"></span>
+<span id="index-types_002c-unsigned"></span>
+<span id="index-signed"></span>
+<span id="index-unsigned"></span>
+
+<p>An unsigned integer type can represent only positive numbers and zero.
+A signed type can represent both positive and negative number, in a
+range spread almost equally on both sides of zero.  For instance,
+<code>unsigned char</code> holds numbers from 0 to 255 (on most computers),
+while <code>signed char</code> holds numbers from -128 to 127.  Each of
+these types holds 256 different possible values, since they are both 8
+bits wide.
+</p>
+<p>Write <code>signed</code> or <code>unsigned</code> before the type keyword to
+specify a signed or an unsigned type.  However, the integer types
+other than <code>char</code> are signed by default; with them, <code>signed</code>
+is a no-op.
+</p>
+<p>Plain <code>char</code> may be signed or unsigned; this depends on the
+compiler, the machine in use, and its operating system.
+</p>
+<p>In many programs, it makes no difference whether <code>char</code> is
+signed.  When it does matter, don&rsquo;t leave it to chance; write
+<code>signed char</code> or <code>unsigned char</code>.<a id="DOCF3" href="#FOOT3"><sup>3</sup></a>
+</p>
+<div class="footnote">
+<hr>
+<h4 class="footnotes-heading">Footnotes</h4>
+
+<h5><a id="FOOT3" href="#DOCF3">(3)</a></h3>
+<p>Personal note from
+Richard Stallman: Eating with hackers at a fish restaurant, I ordered
+Arctic Char.  When my meal arrived, I noted that the chef had not
+signed it.  So I complained, &ldquo;This char is unsigned&mdash;I wanted a
+signed char!&rdquo;  Or rather, I would have said this if I had thought of
+it fast enough.</p>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Significance-Loss.html
===================================================================
--- public/doc/gnu-c/Significance-Loss.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Significance-Loss.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,156 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Significance Loss (GNU C Language Manual)</title>
+
+<meta name="description" content="Significance Loss (GNU C Language Manual)">
+<meta name="keywords" content="Significance Loss (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Floating-Point-in-Depth.html" rel="up" title="Floating Point in Depth">
+<link href="Fused-Multiply_002dAdd.html" rel="next" title="Fused Multiply-Add">
+<link href="Rounding-Issues.html" rel="prev" title="Rounding Issues">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Significance-Loss"></span><div class="header">
+<p>
+Next: <a href="Fused-Multiply_002dAdd.html" accesskey="n" rel="next">Fused Multiply-Add</a>, Previous: <a href="Rounding-Issues.html" accesskey="p" rel="prev">Rounding Issues</a>, Up: <a href="Floating-Point-in-Depth.html" accesskey="u" rel="up">Floating Point in Depth</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>
+</div>
+<hr>
+<span id="Significance-Loss-1"></span><h3 class="section">28.9 Significance Loss</h3>
+<span id="index-significance-loss-_0028floating-point_0029"></span>
+<span id="index-floating_002dpoint-significance-loss"></span>
+
+<p>A much more serious source of error in floating-point computation is
+<em>significance loss</em> from subtraction of nearly equal values.  This
+means that the number of bits in the significand of the result is
+fewer than the size of the value would permit.  If the values being
+subtracted are close enough, but still not equal, a <em>single
+subtraction</em> can wipe out all correct digits, possibly contaminating
+all future computations.
+</p>
+<p>Floating-point calculations can sometimes be carefully designed so
+that significance loss is not possible, such as summing a series where
+all terms have the same sign.  For example, the Taylor series
+expansions of the trigonometric and hyperbolic sines have terms of
+identical magnitude, of the general form <code><var>x</var>**(2*<var>n</var> +
+1) / (2*<var>n</var> + 1)!</code>.  However, those in the trigonometric sine series
+alternate in sign, while those in the hyperbolic sine series are all
+positive.  Here is the output of two small programs that sum <var>k</var>
+terms of the series for <code>sin (<var>x</var>)</code>, and compare the computed
+sums with known-to-be-accurate library functions:
+</p>
+<div class="example">
+<pre class="example">x = 10      k = 51
+s (x)   = -0.544_021_110_889_270
+sin (x) = -0.544_021_110_889_370
+
+x = 20      k = 81
+s (x)   = 0.912_945_250_749_573
+sin (x) = 0.912_945_250_727_628
+
+x = 30      k = 109
+s (x)   = -0.987_813_746_058_855
+sin (x) = -0.988_031_624_092_862
+
+x = 40      k = 137
+s (x)   = 0.617_400_430_980_474
+sin (x) = 0.745_113_160_479_349
+
+x = 50      k = 159
+s (x)   = 57_105.187_673_745_720_532
+sin (x) = -0.262_374_853_703_929
+
+// sinh(x) series summation with positive signs
+// with k terms needed to converge to machine precision
+
+x = 10      k = 47
+t (x)    = 1.101_323_287_470_340e+04
+sinh (x) = 1.101_323_287_470_339e+04
+
+x = 20      k = 69
+t (x)    = 2.425_825_977_048_951e+08
+sinh (x) = 2.425_825_977_048_951e+08
+
+x = 30      k = 87
+t (x)    = 5.343_237_290_762_229e+12
+sinh (x) = 5.343_237_290_762_231e+12
+
+x = 40      k = 105
+t (x)    = 1.176_926_334_185_100e+17
+sinh (x) = 1.176_926_334_185_100e+17
+
+x = 50      k = 121
+t (x)    = 2.592_352_764_293_534e+21
+sinh (x) = 2.592_352_764_293_536e+21
+</pre></div>
+
+<p>We have added underscores to the numbers to enhance readability.
+</p>
+<p>The <code>sinh (<var>x</var>)</code> series with positive terms can be summed to
+high accuracy.  By contrast, the series for <code>sin (<var>x</var>)</code>
+suffers increasing significance loss, so that when <var>x</var> = 30 only
+two correct digits remain.  Soon after, all digits are wrong, and the
+answers are complete nonsense.
+</p>
+<p>An important skill in numerical programming is to recognize when
+significance loss is likely to contaminate a computation, and revise
+the algorithm to reduce this problem.  Sometimes, the only practical
+way to do so is to compute in higher intermediate precision, which is
+why the extended types like <code>long double</code> are important.
+</p>
+
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Fused-Multiply_002dAdd.html" accesskey="n" rel="next">Fused Multiply-Add</a>, Previous: <a href="Rounding-Issues.html" accesskey="p" rel="prev">Rounding Issues</a>, Up: <a href="Floating-Point-in-Depth.html" accesskey="u" rel="up">Floating Point in Depth</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Simple-Assignment.html
===================================================================
--- public/doc/gnu-c/Simple-Assignment.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Simple-Assignment.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,107 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Simple Assignment (GNU C Language Manual)</title>
+
+<meta name="description" content="Simple Assignment (GNU C Language Manual)">
+<meta name="keywords" content="Simple Assignment (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Assignment-Expressions.html" rel="up" title="Assignment Expressions">
+<link href="Lvalues.html" rel="next" title="Lvalues">
+<link href="Assignment-Expressions.html" rel="prev" title="Assignment Expressions">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Simple-Assignment"></span><div class="header">
+<p>
+Next: <a href="Lvalues.html" accesskey="n" rel="next">Lvalues</a>, Up: <a href="Assignment-Expressions.html" accesskey="u" rel="up">Assignment Expressions</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>
+</div>
+<hr>
+<span id="Simple-Assignment-1"></span><h3 class="section">7.1 Simple Assignment</h3>
+<span id="index-simple-assignment"></span>
+<span id="index-assignment_002c-simple"></span>
+
+<p>A <em>simple assignment expression</em> computes the value of the right
+operand and stores it into the lvalue on the left.  Here is a simple
+assignment expression that stores 5 in <code>i</code>:
+</p>
+<div class="example">
+<pre class="example">i = 5
+</pre></div>
+
+<p>We say that this is an <em>assignment to</em> the variable <code>i</code> and
+that it <em>assigns</em> <code>i</code> the value 5.  It has no semicolon
+because it is an expression (so it has a value).  Adding a semicolon
+at the end would make it a statement (see <a href="Expression-Statement.html">Expression Statement</a>).
+</p>
+<p>Here is another example of a simple assignment expression.  Its
+operands are not simple, but the kind of assignment done here is
+simple assignment.
+</p>
+<div class="example">
+<pre class="example">x[foo ()] = y + 6
+</pre></div>
+
+<p>A simple assignment with two different numeric data types converts the
+right operand value to the lvalue&rsquo;s type, if possible.  It can convert
+any numeric type to any other numeric type.
+</p>
+<p>Simple assignment is also allowed on some non-numeric types: pointers
+(see <a href="Pointers.html">Pointers</a>), structures (see <a href="Structure-Assignment.html">Structure Assignment</a>), and
+unions (see <a href="Unions.html">Unions</a>).
+</p>
+<p><strong>Warning:</strong> Assignment is not allowed on arrays because
+there are no array values in C; C variables can be arrays, but these
+arrays cannot be manipulated as wholes.  See <a href="Limitations-of-C-Arrays.html">Limitations of C Arrays</a>.
+</p>
+<p>See <a href="Assignment-Type-Conversions.html">Assignment Type Conversions</a>, for the complete rules about data
+types used in assignments.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Special-Float-Values.html
===================================================================
--- public/doc/gnu-c/Special-Float-Values.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Special-Float-Values.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,163 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Special Float Values (GNU C Language Manual)</title>
+
+<meta name="description" content="Special Float Values (GNU C Language Manual)">
+<meta name="keywords" content="Special Float Values (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Floating-Point-in-Depth.html" rel="up" title="Floating Point in Depth">
+<link href="Invalid-Optimizations.html" rel="next" title="Invalid Optimizations">
+<link href="Floating-Type-Specs.html" rel="prev" title="Floating Type Specs">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Special-Float-Values"></span><div class="header">
+<p>
+Next: <a href="Invalid-Optimizations.html" accesskey="n" rel="next">Invalid Optimizations</a>, Previous: <a href="Floating-Type-Specs.html" accesskey="p" rel="prev">Floating Type Specs</a>, Up: <a href="Floating-Point-in-Depth.html" accesskey="u" rel="up">Floating Point in Depth</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>
+</div>
+<hr>
+<span id="Special-Floating_002dPoint-Values"></span><h3 class="section">28.3 Special Floating-Point Values</h3>
+<span id="index-special-floating_002dpoint-values"></span>
+<span id="index-floating_002dpoint-values_002c-special"></span>
+
+<p>IEEE floating point provides for special values that are not ordinary
+numbers.
+</p>
+<dl compact="compact">
+<dt>infinities</dt>
+<dd><p><code>+Infinity</code> and <code>-Infinity</code> are two different infinite
+values, one positive and one negative.  These result from
+operations such as <code>1 / 0</code>, <code>Infinity + Infinity</code>,
+<code>Infinity * Infinity</code>, and <code>Infinity + <var>finite</var></code>, and also
+from a result that is finite, but larger than the most positive possible
+value or smaller than the most negative possible value.
+</p>
+<p>See <a href="Handling-Infinity.html">Handling Infinity</a>, for more about working with infinities.
+</p>
+</dd>
+<dt>NaNs (not a number)</dt>
+<dd><span id="index-QNaN"></span>
+<span id="index-SNaN"></span>
+<p>There are two special values, called Not-a-Number (NaN): a quiet
+NaN (QNaN), and a signaling NaN (SNaN).
+</p>
+<p>A QNaN is produced by operations for which the value is undefined
+in real arithmetic, such as <code>0 / 0</code>, <code>sqrt (-1)</code>,
+<code>Infinity - Infinity</code>, and any basic operation in which an
+operand is a QNaN.
+</p>
+<p>The signaling NaN is intended for initializing
+otherwise-unassigned storage, and the goal is that unlike a
+QNaN, an SNaN <em>does</em> cause an interrupt that can be caught
+by a software handler, diagnosed, and reported.  In practice,
+little use has been made of signaling NaNs, because the most
+common CPUs in desktop and portable computers fail to implement
+the full IEEE 754 Standard, and supply only one kind of NaN, the
+quiet one.  Also, programming-language standards have taken
+decades to catch up to the IEEE 754 standard, and implementations
+of those language standards make an additional delay before
+programmers become willing to use these features.
+</p>
+<p>To enable support for signaling NaNs, use the GCC command-line option
+<samp>-fsignaling-nans</samp>, but this is an experimental feature and may
+not work as expected in every situation.
+</p>
+<p>A NaN has a sign bit, but its value means nothing.
+</p>
+<p>See <a href="Handling-NaN.html">Handling NaN</a>, for more about working with NaNs.
+</p>
+</dd>
+<dt>subnormal numbers</dt>
+<dd><span id="index-subnormal-numbers"></span>
+<span id="index-underflow_002c-floating"></span>
+<span id="index-floating-underflow"></span>
+<span id="subnormal-numbers"></span><p>It can happen that a computed floating-point value is too small to
+represent, such as when two tiny numbers are multiplied.  The result
+is then said to <em>underflow</em>.  The traditional behavior before
+the IEEE 754 Standard was to use zero as the result, and possibly to report
+the underflow in some sort of program output.
+</p>
+<p>The IEEE 754 Standard is vague about whether rounding happens
+before detection of floating underflow and overflow, or after, and CPU
+designers may choose either.
+</p>
+<p>However, the Standard does something unusual compared to earlier
+designs, and that is that when the result is smaller than the
+smallest <em>normalized</em> representable value (i.e., one in
+which the leading significand bit is <code>1</code>), the normalization
+requirement is relaxed, leading zero bits are permitted, and
+precision is gradually lost until there are no more bits in the
+significand.  That phenomenon is called <em>gradual underflow</em>,
+and it serves important numerical purposes, although it does
+reduce the precision of the final result.  Some floating-point
+designs allow you to choose at compile time, or even at
+run time, whether underflows are gradual, or are flushed abruptly
+to zero.  Numbers that have entered the region of gradual
+underflow are called <em>subnormal</em>.
+</p>
+<p>You can use the library functions <code>fesetround</code> and
+<code>fegetround</code> to set and get the rounding mode.  Rounding modes
+are defined (if supported by the platform) in <code>fenv.h</code> as:
+<code>FE_UPWARD</code> to round toward positive infinity; <code>FE_DOWNWARD</code>
+to round toward negative infinity; <code>FE_TOWARDZERO</code> to round
+toward zero; and <code>FE_TONEAREST</code> to round to the nearest
+representable value, the default mode.  It is best to use
+<code>FE_TONEAREST</code> except when there is a special need for some other
+mode.
+</p></dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Invalid-Optimizations.html" accesskey="n" rel="next">Invalid Optimizations</a>, Previous: <a href="Floating-Type-Specs.html" accesskey="p" rel="prev">Floating Type Specs</a>, Up: <a href="Floating-Point-in-Depth.html" accesskey="u" rel="up">Floating Point in Depth</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Stack.html
===================================================================
--- public/doc/gnu-c/Stack.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Stack.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,126 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Stack (GNU C Language Manual)</title>
+
+<meta name="description" content="Stack (GNU C Language Manual)">
+<meta name="keywords" content="Stack (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="The-First-Example.html" rel="up" title="The First Example">
+<link href="Iterative-Fibonacci.html" rel="next" title="Iterative Fibonacci">
+<link href="Function-Body.html" rel="prev" title="Function Body">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Stack"></span><div class="header">
+<p>
+Next: <a href="Iterative-Fibonacci.html" accesskey="n" rel="next">Iterative Fibonacci</a>, Previous: <a href="Recursive-Fibonacci.html" accesskey="p" rel="prev">Recursive Fibonacci</a>, Up: <a href="The-First-Example.html" accesskey="u" rel="up">The First Example</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>
+</div>
+<hr>
+<span id="The-Stack_002c-And-Stack-Overflow"></span><h3 class="section">1.2 The Stack, And Stack Overflow</h3>
+<span id="index-stack"></span>
+<span id="index-stack-frame"></span>
+<span id="index-stack-overflow"></span>
+<span id="index-recursion_002c-drawbacks-of"></span>
+
+<span id="index-stack-frame-1"></span>
+<p>Recursion has a drawback: there are limits to how many nested function
+calls a program can make.  In C, each function call allocates a block
+of memory which it uses until the call returns.  C allocates these
+blocks consecutively within a large area of memory known as the
+<em>stack</em>, so we refer to the blocks as <em>stack frames</em>.
+</p>
+<p>The size of the stack is limited; if the program tries to use too
+much, that causes the program to fail because the stack is full.  This
+is called <em>stack overflow</em>.
+</p>
+<span id="index-crash"></span>
+<span id="index-segmentation-fault"></span>
+<p>Stack overflow on GNU/Linux typically manifests itself as the
+<em>signal</em> named <code>SIGSEGV</code>, also known as a &ldquo;segmentation
+fault.&rdquo;  By default, this signal terminates the program immediately,
+rather than letting the program try to recover, or reach an expected
+ending point.  (We commonly say in this case that the program
+&ldquo;crashes&rdquo;).  See <a href="Signals.html">Signals</a>.
+</p>
+<p>It is inconvenient to observe a crash by passing too large
+an argument to recursive Fibonacci, because the program would run a
+long time before it crashes.  This algorithm is simple but
+ridiculously slow: in calculating <code>fib (<var>n</var>)</code>, the number of
+(recursive) calls <code>fib (1)</code> or <code>fib (2)</code> that it makes equals
+the final result.
+</p>
+<p>However, you can observe stack overflow very quickly if you use
+this function instead:
+</p>
+<div class="example">
+<pre class="example">int
+fill_stack (int n)
+{
+  if (n &lt;= 1)  /* <span class="roman">This limits the depth of recursion.</span>  */
+    return 1;
+  else
+    return fill_stack (n - 1);
+}
+</pre></div>
+
+<p>Under gNewSense GNU/Linux on the Lemote Yeeloong, without optimization
+and using the default configuration, an experiment showed there is
+enough stack space to do 261906 nested calls to that function.  One
+more, and the stack overflows and the program crashes.  On another
+platform, with a different configuration, or with a different
+function, the limit might be bigger or smaller.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Iterative-Fibonacci.html" accesskey="n" rel="next">Iterative Fibonacci</a>, Previous: <a href="Recursive-Fibonacci.html" accesskey="p" rel="prev">Recursive Fibonacci</a>, Up: <a href="The-First-Example.html" accesskey="u" rel="up">The First Example</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Statement-Exprs.html
===================================================================
--- public/doc/gnu-c/Statement-Exprs.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Statement-Exprs.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,126 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Statement Exprs (GNU C Language Manual)</title>
+
+<meta name="description" content="Statement Exprs (GNU C Language Manual)">
+<meta name="keywords" content="Statement Exprs (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Statements.html" rel="up" title="Statements">
+<link href="Variables.html" rel="next" title="Variables">
+<link href="Label-Value-Caveats.html" rel="prev" title="Label Value Caveats">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Statement-Exprs"></span><div class="header">
+<p>
+Previous: <a href="Labels-as-Values.html" accesskey="p" rel="prev">Labels as Values</a>, Up: <a href="Statements.html" accesskey="u" rel="up">Statements</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>
+</div>
+<hr>
+<span id="Statements-and-Declarations-in-Expressions"></span><h3 class="section">19.15 Statements and Declarations in Expressions</h3>
+<span id="index-statements-inside-expressions"></span>
+<span id="index-declarations-inside-expressions"></span>
+<span id="index-expressions-containing-statements"></span>
+
+<p>A block enclosed in parentheses can be used as an expression in GNU
+C.  This provides a way to use local variables, loops and switches within
+an expression.  We call it a <em>statement expression</em>.
+</p>
+<p>Recall that a block is a sequence of statements
+surrounded by braces.  In this construct, parentheses go around the
+braces.  For example:
+</p>
+<div class="example">
+<pre class="example">({ int y = foo (); int z;
+   if (y &gt; 0) z = y;
+   else z = - y;
+   z; })
+</pre></div>
+
+<p>is a valid (though slightly more complex than necessary) expression
+for the absolute value of <code>foo ()</code>.
+</p>
+<p>The last statement in the block should be an expression statement; an
+expression followed by a semicolon, that is.  The value of this
+expression serves as the value of statement expression.  If the last
+statement is anything else, the statement expression&rsquo;s value is
+<code>void</code>.
+</p>
+<p>This feature is mainly useful in making macro definitions compute each
+operand exactly once.  See <a href="Macros-and-Auto-Type.html">Macros and Auto Type</a>.
+</p>
+<p>Statement expressions are not allowed in expressions that must be
+constant, such as the value for an enumerator, the width of a
+bit-field, or the initial value of a static variable.
+</p>
+<p>Jumping into a statement expression&mdash;with <code>goto</code>, or using a
+<code>switch</code> statement outside the statement expression&mdash;is an
+error.  With a computed <code>goto</code> (see <a href="Labels-as-Values.html">Labels as Values</a>), the
+compiler can&rsquo;t detect the error, but it still won&rsquo;t work.
+</p>
+<p>Jumping out of a statement expression is permitted, but since
+subexpressions in C are not computed in a strict order, it is
+unpredictable which other subexpressions will have been computed by
+then.  For example,
+</p>
+<div class="example">
+<pre class="example">  foo (), (({ bar1 (); goto a; 0; }) + bar2 ()), baz();
+</pre></div>
+
+<p>calls <code>foo</code> and <code>bar1</code> before it jumps, and never
+calls <code>baz</code>, but may or may not call <code>bar2</code>.  If <code>bar2</code>
+does get called, that occurs after <code>foo</code> and before <code>bar1</code>.
+</p>
+<hr>
+<div class="header">
+<p>
+Previous: <a href="Labels-as-Values.html" accesskey="p" rel="prev">Labels as Values</a>, Up: <a href="Statements.html" accesskey="u" rel="up">Statements</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Statements.html
===================================================================
--- public/doc/gnu-c/Statements.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Statements.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,125 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Statements (GNU C Language Manual)</title>
+
+<meta name="description" content="Statements (GNU C Language Manual)">
+<meta name="keywords" content="Statements (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html" rel="up" title="Top">
+<link href="Expression-Statement.html" rel="next" title="Expression Statement">
+<link href="Defining-Typedef-Names.html" rel="prev" title="Defining Typedef Names">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Statements"></span><div class="header">
+<p>
+Next: <a href="Variables.html" accesskey="n" rel="next">Variables</a>, Previous: <a href="Defining-Typedef-Names.html" accesskey="p" rel="prev">Defining Typedef Names</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</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>
+</div>
+<hr>
+<span id="Statements-1"></span><h2 class="chapter">19 Statements</h2>
+<span id="index-statements"></span>
+
+<p>A <em>statement</em> specifies computations to be done for effect; it
+does not produce a value, as an expression would.  In general a
+statement ends with a semicolon (&lsquo;<samp>;</samp>&rsquo;), but blocks (which are
+statements, more or less) are an exception to that rule.
+See <a href="Blocks.html">Blocks</a>.
+</p>
+<p>The places to use statements are inside a block, and inside a
+complex statement.  A <em>complex statement</em> contains one or two
+components that are nested statements.  Each such component must
+consist of one and only one statement.  The way to put multiple
+statements in such a component is to group them into a <em>block</em>
+(see <a href="Blocks.html">Blocks</a>), which counts as one statement.
+</p>
+<p>The following sections describe the various kinds of statement.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Expression-Statement.html" accesskey="1">Expression Statement</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Evaluate an expression, as a statement,
+                                   usually done for a side effect.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="if-Statement.html" accesskey="2">if Statement</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Basic conditional execution.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="if_002delse-Statement.html" accesskey="3">if-else Statement</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Multiple branches for conditional execution.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Blocks.html" accesskey="4">Blocks</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Grouping multiple statements together.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="return-Statement.html" accesskey="5">return Statement</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Return a value from a function.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Loop-Statements.html" accesskey="6">Loop Statements</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Repeatedly executing a statement or block.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="switch-Statement.html" accesskey="7">switch Statement</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Multi-way conditional choices.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="switch-Example.html" accesskey="8">switch Example</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">A plausible example of using <code>switch</code>.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Duffs-Device.html" accesskey="9">Duffs Device</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">A special way to use <code>switch</code>.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Case-Ranges.html">Case Ranges</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Ranges of values for <code>switch</code> cases.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Null-Statement.html">Null Statement</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">A statement that does nothing.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="goto-Statement.html">goto Statement</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Jump to another point in the source code,
+                                   identified by a label.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Local-Labels.html">Local Labels</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Labels with limited scope.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Labels-as-Values.html">Labels as Values</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Getting the address of a label.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Statement-Exprs.html">Statement Exprs</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">A series of statements used as an expression.
+</td></tr>
+</table>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Variables.html" accesskey="n" rel="next">Variables</a>, Previous: <a href="Defining-Typedef-Names.html" accesskey="p" rel="prev">Defining Typedef Names</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Static-Assertions.html
===================================================================
--- public/doc/gnu-c/Static-Assertions.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Static-Assertions.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,127 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Static Assertions (GNU C Language Manual)</title>
+
+<meta name="description" content="Static Assertions (GNU C Language Manual)">
+<meta name="keywords" content="Static Assertions (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Directing-Compilation.html" rel="up" title="Directing Compilation">
+<link href="Type-Alignment.html" rel="next" title="Type Alignment">
+<link href="Optimization-Pragmas.html" rel="prev" title="Optimization Pragmas">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Static-Assertions"></span><div class="header">
+<p>
+Previous: <a href="Pragmas.html" accesskey="p" rel="prev">Pragmas</a>, Up: <a href="Directing-Compilation.html" accesskey="u" rel="up">Directing Compilation</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>
+</div>
+<hr>
+<span id="Static-Assertions-1"></span><h3 class="section">30.2 Static Assertions</h3>
+<span id="index-static-assertions"></span>
+<span id="index-_005fStatic_005fassert"></span>
+
+<p>You can add compiler-time tests for necessary conditions into your
+code using <code>_Static_assert</code>.  This can be useful, for example, to
+check that the compilation target platform supports the type sizes
+that the code expects.  For example,
+</p>
+<div class="example">
+<pre class="example">_Static_assert ((sizeof (long int) &gt;= 8),
+    &quot;long int needs to be at least 8 bytes&quot;);
+</pre></div>
+
+<p>reports a compile-time error if compiled on a system with long
+integers smaller than 8 bytes, with &lsquo;<samp>long int needs to be at
+least 8 bytes</samp>&rsquo; as the error message.
+</p>
+<p>Since calls <code>_Static_assert</code> are processed at compile time, the
+expression must be computable at compile time and the error message
+must be a literal string.  The expression can refer to the sizes of
+variables, but can&rsquo;t refer to their values.  For example, the
+following static assertion is invalid for two reasons:
+</p>
+<div class="example">
+<pre class="example">char *error_message
+  = &quot;long int needs to be at least 8 bytes&quot;;
+int size_of_long_int = sizeof (long int);
+
+_Static_assert (size_of_long_int == 8, error_message);
+</pre></div>
+
+<p>The expression <code>size_of_long_int == 8</code> isn&rsquo;t computable at
+compile time, and the error message isn&rsquo;t a literal string.
+</p>
+<p>You can, though, use preprocessor definition values with
+<code>_Static_assert</code>:
+</p>
+<div class="example">
+<pre class="example">#define LONG_INT_ERROR_MESSAGE &quot;long int needs to be \
+at least 8 bytes&quot;
+
+_Static_assert ((sizeof (long int) == 8),
+  LONG_INT_ERROR_MESSAGE);
+</pre></div>
+
+<p>Static assertions are permitted wherever a statement or declaration is
+permitted, including at top level in the file, and also inside the
+definition of a type.
+</p>
+<div class="example">
+<pre class="example">union y
+{
+  int i;
+  int *ptr;
+  _Static_assert (sizeof (int *) == sizeof (int),
+		  &quot;Pointer and int not same size&quot;);
+};
+</pre></div>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Static-Functions.html
===================================================================
--- public/doc/gnu-c/Static-Functions.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Static-Functions.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,107 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Static Functions (GNU C Language Manual)</title>
+
+<meta name="description" content="Static Functions (GNU C Language Manual)">
+<meta name="keywords" content="Static Functions (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Function-Definitions.html" rel="up" title="Function Definitions">
+<link href="Arrays-as-Parameters.html" rel="next" title="Arrays as Parameters">
+<link href="Forward-Function-Declarations.html" rel="prev" title="Forward Function Declarations">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Static-Functions"></span><div class="header">
+<p>
+Next: <a href="Arrays-as-Parameters.html" accesskey="n" rel="next">Arrays as Parameters</a>, Previous: <a href="Forward-Function-Declarations.html" accesskey="p" rel="prev">Forward Function Declarations</a>, Up: <a href="Function-Definitions.html" accesskey="u" rel="up">Function Definitions</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>
+</div>
+<hr>
+<span id="Static-Functions-1"></span><h4 class="subsection">22.1.3 Static Functions</h4>
+<span id="index-static-functions"></span>
+<span id="index-functions_002c-static"></span>
+<span id="index-static-1"></span>
+
+<p>The keyword <code>static</code> in a function definition limits the
+visibility of the name to the current compilation module.  (That&rsquo;s the
+same thing <code>static</code> does in variable declarations;
+see <a href="File_002dScope-Variables.html">File-Scope Variables</a>.)  For instance, if one compilation module
+contains this code:
+</p>
+<div class="example">
+<pre class="example">static int
+foo (void)
+{
+  <span class="roman">&hellip;</span>
+}
+</pre></div>
+
+<p>then the code of that compilation module can call <code>foo</code> anywhere
+after the definition, but other compilation modules cannot refer to it
+at all.
+</p>
+<span id="index-forward-declaration"></span>
+<span id="index-static-function_002c-declaration"></span>
+<p>To call <code>foo</code> before its definition, it needs a forward
+declaration, which should use <code>static</code> since the function
+definition does.  For this function, it looks like this:
+</p>
+<div class="example">
+<pre class="example">static int foo (void);
+</pre></div>
+
+<p>It is generally wise to use <code>static</code> on the definitions of
+functions that won&rsquo;t be called from outside the same compilation
+module.  This makes sure that calls are not added in other modules.
+If programmers decide to change the function&rsquo;s calling convention, or
+understand all the consequences of its use, they will only have to
+check for calls in the same compilation module.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Static-Local-Variables.html
===================================================================
--- public/doc/gnu-c/Static-Local-Variables.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Static-Local-Variables.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,99 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Static Local Variables (GNU C Language Manual)</title>
+
+<meta name="description" content="Static Local Variables (GNU C Language Manual)">
+<meta name="keywords" content="Static Local Variables (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Variables.html" rel="up" title="Variables">
+<link href="Extern-Declarations.html" rel="next" title="Extern Declarations">
+<link href="File_002dScope-Variables.html" rel="prev" title="File-Scope Variables">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Static-Local-Variables"></span><div class="header">
+<p>
+Next: <a href="Extern-Declarations.html" accesskey="n" rel="next">Extern Declarations</a>, Previous: <a href="File_002dScope-Variables.html" accesskey="p" rel="prev">File-Scope Variables</a>, Up: <a href="Variables.html" accesskey="u" rel="up">Variables</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>
+</div>
+<hr>
+<span id="Static-Local-Variables-1"></span><h3 class="section">20.7 Static Local Variables</h3>
+<span id="index-static-local-variables"></span>
+<span id="index-variables_002c-static-local"></span>
+<span id="index-static"></span>
+
+<p>The keyword <code>static</code> in a local variable declaration says to
+allocate the storage for the variable permanently, just like a
+file-scope variable, even if the declaration is within a function.
+</p>
+<p>Here&rsquo;s an example:
+</p>
+<div class="example">
+<pre class="example">int
+increment_counter ()
+{
+  static int counter = 0;
+  return ++counter;
+}
+</pre></div>
+
+<p>The scope of the name <code>counter</code> runs from the declaration to the
+end of the containing block, just like an automatic local variable,
+but its storage is permanent, so the value persists from one call to
+the next.  As a result, each call to <code>increment_counter</code>
+returns a different, unique value.
+</p>
+<p>The initial value of a static local variable has the same limitations
+as for file-scope variables: it can&rsquo;t depend on the contents of
+storage or call any functions.  It can use the address of a file-scope
+variable or a static local variable, because those addresses are
+determined before the program runs.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Storage.html
===================================================================
--- public/doc/gnu-c/Storage.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Storage.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,86 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Storage (GNU C Language Manual)</title>
+
+<meta name="description" content="Storage (GNU C Language Manual)">
+<meta name="keywords" content="Storage (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html" rel="up" title="Top">
+<link href="Beyond-Integers.html" rel="next" title="Beyond Integers">
+<link href="Compile-Example.html" rel="prev" title="Compile Example">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Storage"></span><div class="header">
+<p>
+Next: <a href="Beyond-Integers.html" accesskey="n" rel="next">Beyond Integers</a>, Previous: <a href="Complete-Program.html" accesskey="p" rel="prev">Complete Program</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</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>
+</div>
+<hr>
+<span id="Storage-and-Data"></span><h2 class="chapter">3 Storage and Data</h2>
+<span id="index-bytes"></span>
+<span id="index-storage-organization"></span>
+<span id="index-memory-organization"></span>
+
+<p>Storage in C programs is made up of units called <em>bytes</em>.  On
+nearly all computers, a byte consists of 8 bits, but there are a few
+peculiar computers (mostly &ldquo;embedded controllers&rdquo; for very small
+systems) where a byte is longer than that.  This manual does not try
+to explain the peculiarity of those computers; we assume that a byte
+is 8 bits.
+</p>
+<p>Every C data type is made up of a certain number of bytes; that number
+is the data type&rsquo;s <em>size</em>.  See <a href="Type-Size.html">Type Size</a>, for details.  The
+types <code>signed char</code> and <code>unsigned char</code> are one byte long;
+use those types to operate on data byte by byte.  See <a href="Signed-and-Unsigned-Types.html">Signed and Unsigned Types</a>.  You can refer to a series of consecutive bytes as an
+array of <code>char</code> elements; that&rsquo;s what an ASCII string looks like
+in memory.  See <a href="String-Constants.html">String Constants</a>.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/String-Constants.html
===================================================================
--- public/doc/gnu-c/String-Constants.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/String-Constants.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,174 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>String Constants (GNU C Language Manual)</title>
+
+<meta name="description" content="String Constants (GNU C Language Manual)">
+<meta name="keywords" content="String Constants (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Constants.html" rel="up" title="Constants">
+<link href="UTF_002d8-String-Constants.html" rel="next" title="UTF-8 String Constants">
+<link href="Character-Constants.html" rel="prev" title="Character Constants">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="String-Constants"></span><div class="header">
+<p>
+Next: <a href="UTF_002d8-String-Constants.html" accesskey="n" rel="next">UTF-8 String Constants</a>, Previous: <a href="Character-Constants.html" accesskey="p" rel="prev">Character Constants</a>, Up: <a href="Constants.html" accesskey="u" rel="up">Constants</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>
+</div>
+<hr>
+<span id="String-Constants-1"></span><h3 class="section">12.7 String Constants</h3>
+<span id="index-string-constants"></span>
+<span id="index-constants_002c-string"></span>
+
+<p>A <em>string constant</em> represents a series of characters.  It starts
+with &lsquo;<samp>&quot;</samp>&rsquo; and ends with &lsquo;<samp>&quot;</samp>&rsquo;; in between are the contents of
+the string.  Quoting special characters such as &lsquo;<samp>&quot;</samp>&rsquo;, &lsquo;<samp>\</samp>&rsquo; and
+newline in the contents works in string constants as in character
+constants.  In a string constant, &lsquo;<samp>'</samp>&rsquo; does not need to be quoted.
+</p>
+<p>A string constant defines an array of characters which contains the
+specified characters followed by the null character (code 0).  Using
+the string constant is equivalent to using the name of an array with
+those contents.  In simple cases, the length in bytes of the string
+constant is one greater than the number of characters written in it.
+</p>
+<p>As with any array in C, using the string constant in an expression
+converts the array to a pointer (see <a href="Pointers.html">Pointers</a>) to the array&rsquo;s
+first element (see <a href="Accessing-Array-Elements.html">Accessing Array Elements</a>).  This pointer will
+have type <code>char *</code> because it points to an element of type
+<code>char</code>.  <code>char *</code> is an example of a type designator for a
+pointer type (see <a href="Pointer-Type-Designators.html">Pointer Type Designators</a>).  That type is used
+for strings generally, not just the strings expressed as constants
+in a program.
+</p>
+<p>Thus, the string constant <code>&quot;Foo!&quot;</code> is almost
+equivalent to declaring an array like this
+</p>
+<div class="example">
+<pre class="example">char string_array_1[] = {'F', 'o', 'o', '!', '\0' };
+</pre></div>
+
+<p>and then using <code>string_array_1</code> in the program.  There
+are two differences, however:
+</p>
+<ul>
+<li> The string constant doesn&rsquo;t define a name for the array.
+
+</li><li> The string constant is probably stored in a read-only area of memory.
+</li></ul>
+
+<p>Newlines are not allowed in the text of a string constant.  The motive
+for this prohibition is to catch the error of omitting the closing
+&lsquo;<samp>&quot;</samp>&rsquo;.  To put a newline in a constant string, write it as
+&lsquo;<samp>\n</samp>&rsquo; in the string constant.
+</p>
+<p>A real null character in the source code inside a string constant
+causes a warning.  To put a null character in the middle of a string
+constant, write &lsquo;<samp>\0</samp>&rsquo; or &lsquo;<samp>\000</samp>&rsquo;.
+</p>
+<p>Consecutive string constants are effectively concatenated.  Thus,
+</p>
+<div class="example">
+<pre class="example">&quot;Fo&quot; &quot;o!&quot;   <span class="roman">is equivalent to</span>   &quot;Foo!&quot;
+</pre></div>
+
+<p>This is useful for writing a string containing multiple lines,
+like this:
+</p>
+<div class="example">
+<pre class="example">&quot;This message is so long that it needs more than\n&quot;
+&quot;a single line of text.  C does not allow a newline\n&quot;
+&quot;to represent itself in a string constant, so we have to\n&quot;
+&quot;write \\n to put it in the string.  For readability of\n&quot;
+&quot;the source code, it is advisable to put line breaks in\n&quot;
+&quot;the source where they occur in the contents of the\n&quot;
+&quot;constant.\n&quot;
+</pre></div>
+
+<p>The sequence of a backslash and a newline is ignored anywhere
+in a C program, and that includes inside a string constant.
+Thus, you can write multi-line string constants this way:
+</p>
+<div class="example">
+<pre class="example">&quot;This is another way to put newlines in a string constant\n\
+and break the line after them in the source code.&quot;
+</pre></div>
+
+<p>However, concatenation is the recommended way to do this.
+</p>
+<p>You can also write perverse string constants like this,
+</p>
+<div class="example">
+<pre class="example">&quot;Fo\
+o!&quot;
+</pre></div>
+
+<p>but don&rsquo;t do that&mdash;write it like this instead:
+</p>
+<div class="example">
+<pre class="example">&quot;Foo!&quot;
+</pre></div>
+
+<p>Be careful to avoid passing a string constant to a function that
+modifies the string it receives.  The memory where the string constant
+is stored may be read-only, which would cause a fatal <code>SIGSEGV</code>
+signal that normally terminates the function (see <a href="Signals.html">Signals</a>.  Even
+worse, the memory may not be read-only.  Then the function might
+modify the string constant, thus spoiling the contents of other string
+constants that are supposed to contain the same value and are unified
+by the compiler.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="UTF_002d8-String-Constants.html" accesskey="n" rel="next">UTF-8 String Constants</a>, Previous: <a href="Character-Constants.html" accesskey="p" rel="prev">Character Constants</a>, Up: <a href="Constants.html" accesskey="u" rel="up">Constants</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Stringification.html
===================================================================
--- public/doc/gnu-c/Stringification.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Stringification.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,155 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Stringification (GNU C Language Manual)</title>
+
+<meta name="description" content="Stringification (GNU C Language Manual)">
+<meta name="keywords" content="Stringification (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Macros.html" rel="up" title="Macros">
+<link href="Concatenation.html" rel="next" title="Concatenation">
+<link href="Macro-Arguments.html" rel="prev" title="Macro Arguments">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Stringification"></span><div class="header">
+<p>
+Next: <a href="Concatenation.html" accesskey="n" rel="next">Concatenation</a>, Previous: <a href="Macro-Arguments.html" accesskey="p" rel="prev">Macro Arguments</a>, Up: <a href="Macros.html" accesskey="u" rel="up">Macros</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>
+</div>
+<hr>
+<span id="Stringification-1"></span><h4 class="subsection">26.5.4 Stringification</h4>
+<span id="index-stringification"></span>
+<span id="index-_0023-operator"></span>
+
+<p>Sometimes you may want to convert a macro argument into a string
+constant.  Parameters are not replaced inside string constants, but
+you can use the <code>#</code> preprocessing operator instead.  When a macro
+parameter is used with a leading <code>#</code>, preprocessing replaces it
+with the literal text of the actual argument, converted to a string
+constant.  Unlike normal parameter replacement, the argument is not
+macro-expanded first.  This is called <em>stringification</em>.
+</p>
+<p>There is no way to combine an argument with surrounding text and
+stringify it all together.  But you can write a series of string
+constants and stringified arguments.  After preprocessing replaces the
+stringified arguments with string constants, the consecutive string
+constants will be concatenated into one long string constant
+(see <a href="String-Constants.html">String Constants</a>).
+</p>
+<p>Here is an example that uses stringification and concatenation of
+string constants:
+</p>
+<div class="example">
+<pre class="example">#define WARN_IF(EXP) \
+  do { if (EXP) \
+          fprintf (stderr, &quot;Warning: &quot; #EXP &quot;\n&quot;); } \
+  while (0)
+
+WARN_IF (x == 0);
+     &rarr;
+  do { if (x == 0)
+          fprintf (stderr, &quot;Warning: &quot; &quot;x == 0&quot; &quot;\n&quot;); }
+  while (0);
+</pre></div>
+
+<p>The argument for <code>EXP</code> is substituted once, as is, into the
+<code>if</code> statement, and once, stringified, into the argument to
+<code>fprintf</code>.  If <code>x</code> were a macro, it would be expanded in the
+<code>if</code> statement but not in the string.
+</p>
+<p>The <code>do</code> and <code>while (0)</code> are a kludge to make it possible to
+write <code>WARN_IF (<var>arg</var>);</code>.  The resemblance of <code>WARN_IF</code>
+to a function makes that a natural way to write it.
+See <a href="Swallowing-the-Semicolon.html">Swallowing the Semicolon</a>.
+</p>
+<p>Stringification in C involves more than putting double-quote
+characters around the fragment.  It also backslash-escapes the quotes
+surrounding embedded string constants, and all backslashes within
+string and character constants, in order to get a valid C string
+constant with the proper contents.  Thus, stringifying <code>p&nbsp;=&nbsp;&quot;foo\n&quot;;<!-- /@w --></code> results in <tt>&quot;p&nbsp;=&nbsp;\&quot;foo\\n\&quot;;&quot;<!-- /@w --></tt>.  However, backslashes
+that are not inside string or character constants are not duplicated:
+&lsquo;<samp>\n</samp>&rsquo; by itself stringifies to <tt>&quot;\n&quot;</tt>.
+</p>
+<p>All leading and trailing whitespace in text being stringified is
+ignored.  Any sequence of whitespace in the middle of the text is
+converted to a single space in the stringified result.  Comments are
+replaced by whitespace long before stringification happens, so they
+never appear in stringified text.
+</p>
+<p>There is no way to convert a macro argument into a character constant.
+</p>
+<p>To stringify the result of expansion of a macro argument, you have to
+use two levels of macros, like this:
+</p>
+<div class="example">
+<pre class="example">#define xstr(S) str(S)
+#define str(s) #s
+#define foo 4
+str (foo)
+     &rarr; &quot;foo&quot;
+xstr (foo)
+     &rarr; xstr (4)
+     &rarr; str (4)
+     &rarr; &quot;4&quot;
+</pre></div>
+
+<p><code>s</code> is stringified when it is used in <code>str</code>, so it is not
+macro-expanded first.  But <code>S</code> is an ordinary argument to
+<code>xstr</code>, so it is completely macro-expanded before <code>xstr</code>
+itself is expanded (see <a href="Argument-Prescan.html">Argument Prescan</a>).  Therefore, by the time
+<code>str</code> gets to its argument text, that text already been
+macro-expanded.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Concatenation.html" accesskey="n" rel="next">Concatenation</a>, Previous: <a href="Macro-Arguments.html" accesskey="p" rel="prev">Macro Arguments</a>, Up: <a href="Macros.html" accesskey="u" rel="up">Macros</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Strings.html
===================================================================
--- public/doc/gnu-c/Strings.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Strings.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,155 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Strings (GNU C Language Manual)</title>
+
+<meta name="description" content="Strings (GNU C Language Manual)">
+<meta name="keywords" content="Strings (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Arrays.html" rel="up" title="Arrays">
+<link href="Array-Type-Designators.html" rel="next" title="Array Type Designators">
+<link href="Declaring-an-Array.html" rel="prev" title="Declaring an Array">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Strings"></span><div class="header">
+<p>
+Next: <a href="Array-Type-Designators.html" accesskey="n" rel="next">Array Type Designators</a>, Previous: <a href="Declaring-an-Array.html" accesskey="p" rel="prev">Declaring an Array</a>, Up: <a href="Arrays.html" accesskey="u" rel="up">Arrays</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>
+</div>
+<hr>
+<span id="Strings-1"></span><h3 class="section">16.3 Strings</h3>
+<span id="index-string"></span>
+
+<p>A string in C is a sequence of elements of type <code>char</code>,
+terminated with the null character, the character with code zero.
+</p>
+<p>Programs often need to use strings with specific, fixed contents.  To
+write one in a C program, use a <em>string constant</em> such as
+<code>&quot;Take me to your leader!&quot;</code>.  The data type of a string constant
+is <code>char *</code>.  For the full syntactic details of writing string
+constants, <a href="String-Constants.html">String Constants</a>.
+</p>
+<p>To declare a place to store a non-constant string, declare an array of
+<code>char</code>.  Keep in mind that it must include one extra <code>char</code>
+for the terminating null.  For instance,
+</p>
+<div class="example">
+<pre class="example">char text = { 'H', 'e', 'l', 'l', 'o', 0 };
+</pre></div>
+
+<p>declares an array named &lsquo;<samp>text</samp>&rsquo; with six elements&mdash;five letters
+and the terminating null character.  An equivalent way to get the same
+result is this,
+</p>
+<div class="example">
+<pre class="example">char text = &quot;Hello&quot;;
+</pre></div>
+
+<p>which copies the elements of the string constant, including <em>its</em>
+terminating null character.
+</p>
+<div class="example">
+<pre class="example">char message[200];
+</pre></div>
+
+<p>declares an array long enough to hold a string of 199 ASCII characters
+plus the terminating null character.
+</p>
+<p>When you store a string into <code>message</code> be sure to check or prove
+that the length does not exceed its size.  For example,
+</p>
+<div class="example">
+<pre class="example">void
+set_message (char *text)
+{
+  int i;
+  for (i = 0; i &lt; sizeof (message); i++)
+    {
+      message[i] = text[i];
+      if (text[i] == 0)
+        return;
+    }
+  fatal_error (&quot;Message is too long for `message');
+}
+</pre></div>
+
+<p>It&rsquo;s easy to do this with the standard library function
+<code>strncpy</code>, which fills out the whole destination array (up to a
+specified length) with null characters.  Thus, if the last character
+of the destination is not null, the string did not fit.  Many system
+libraries, including the GNU C library, hand-optimize <code>strncpy</code>
+to run faster than an explicit <code>for</code>-loop.
+</p>
+<p>Here&rsquo;s what the code looks like:
+</p>
+<div class="example">
+<pre class="example">void
+set_message (char *text)
+{
+  strncpy (message, text, sizeof (message));
+  if (message[sizeof (message) - 1] != 0)
+    fatal_error (&quot;Message is too long for `message');
+}
+</pre></div>
+
+<p>See <a href="https://www.gnu.org/software/libc/manual/html_node/String-and-Array-Utilities.html#String-and-Array-Utilities">The GNU C Library</a> in <cite>The GNU C
+Library Reference Manual</cite>, for more information about the standard
+library functions for operating on strings.
+</p>
+<p>You can avoid putting a fixed length limit on strings you construct or
+operate on by allocating the space for them dynamically.
+See <a href="Dynamic-Memory-Allocation.html">Dynamic Memory Allocation</a>.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Array-Type-Designators.html" accesskey="n" rel="next">Array Type Designators</a>, Previous: <a href="Declaring-an-Array.html" accesskey="p" rel="prev">Declaring an Array</a>, Up: <a href="Arrays.html" accesskey="u" rel="up">Arrays</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Structs-as-Parameters.html
===================================================================
--- public/doc/gnu-c/Structs-as-Parameters.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Structs-as-Parameters.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,119 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Structs as Parameters (GNU C Language Manual)</title>
+
+<meta name="description" content="Structs as Parameters (GNU C Language Manual)">
+<meta name="keywords" content="Structs as Parameters (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Function-Definitions.html" rel="up" title="Function Definitions">
+<link href="Function-Declarations.html" rel="next" title="Function Declarations">
+<link href="Array-Parm-Qualifiers.html" rel="prev" title="Array Parm Qualifiers">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Structs-as-Parameters"></span><div class="header">
+<p>
+Previous: <a href="Arrays-as-Parameters.html" accesskey="p" rel="prev">Arrays as Parameters</a>, Up: <a href="Function-Definitions.html" accesskey="u" rel="up">Function Definitions</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>
+</div>
+<hr>
+<span id="Functions-That-Accept-Structure-Arguments"></span><h4 class="subsection">22.1.5 Functions That Accept Structure Arguments</h4>
+
+<p>Structures in GNU C are first-class objects, so using them as function
+parameters and arguments works in the natural way.  This function
+<code>swapfoo</code> takes a <code>struct foo</code> with two fields as argument,
+and returns a structure of the same type but with the fields
+exchanged.
+</p>
+<div class="example">
+<pre class="example">struct foo { int a, b; };
+
+struct foo x;
+
+struct foo
+swapfoo (struct foo inval)
+{
+  struct foo outval;
+  outval.a = inval.b;
+  outval.b = inval.a;
+  return outval;
+}
+</pre></div>
+
+<p>This simpler definition of <code>swapfoo</code> avoids using a local
+variable to hold the result about to be return, by using a structure
+constructor (see <a href="Structure-Constructors.html">Structure Constructors</a>), like this:
+</p>
+<div class="example">
+<pre class="example">struct foo
+swapfoo (struct foo inval)
+{
+  return (struct foo) { inval.b, inval.a };
+}
+</pre></div>
+
+<p>It is valid to define a structure type in a function&rsquo;s parameter list,
+as in
+</p>
+<div class="example">
+<pre class="example">int
+frob_bar (struct bar { int a, b; } inval)
+{
+  <var>body</var>
+}
+</pre></div>
+
+<p>and <var>body</var> can access the fields of <var>inval</var> since the
+structure type <code>struct bar</code> is defined for the whole function
+body.  However, there is no way to create a <code>struct bar</code> argument
+to pass to <code>frob_bar</code>, except with kludges.  As a result,
+defining a structure type in a parameter list is useless in practice.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Structure-Assignment.html
===================================================================
--- public/doc/gnu-c/Structure-Assignment.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Structure-Assignment.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,107 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Structure Assignment (GNU C Language Manual)</title>
+
+<meta name="description" content="Structure Assignment (GNU C Language Manual)">
+<meta name="keywords" content="Structure Assignment (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Structures.html" rel="up" title="Structures">
+<link href="Unions.html" rel="next" title="Unions">
+<link href="Overlaying-Structures.html" rel="prev" title="Overlaying Structures">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Structure-Assignment"></span><div class="header">
+<p>
+Next: <a href="Unions.html" accesskey="n" rel="next">Unions</a>, Previous: <a href="Overlaying-Structures.html" accesskey="p" rel="prev">Overlaying Structures</a>, Up: <a href="Structures.html" accesskey="u" rel="up">Structures</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>
+</div>
+<hr>
+<span id="Structure-Assignment-1"></span><h3 class="section">15.12 Structure Assignment</h3>
+<span id="index-structure-assignment"></span>
+<span id="index-assigning-structures"></span>
+
+<p>Assignment operating on a structure type copies the structure.  The
+left and right operands must have the same type.  Here is an example:
+</p>
+<div class="example">
+<pre class="example">#include &lt;stddef.h&gt;  /* <span class="roman">Defines <code>NULL</code>.</span> */
+#include &lt;stdlib.h&gt;  /* <span class="roman">Declares <code>malloc</code>.</span>  */
+<span class="roman">&hellip;</span>
+
+struct point { double x, y; };
+
+struct point *
+copy_point (struct point point)
+{
+  struct point *p
+    = (struct point *) malloc (sizeof (struct point));
+  if (p == NULL)
+    fatal (&quot;Out of memory&quot;);
+  *p = point;
+  return p;
+}
+</pre></div>
+
+<p>Notionally, assignment on a structure type works by copying each of
+the fields.  Thus, if any of the fields has the <code>const</code>
+qualifier, that structure type does not allow assignment:
+</p>
+<div class="example">
+<pre class="example">struct point { const double x, y; };
+
+struct point a, b;
+
+a = b;            /* <span class="roman">Error!</span> */
+</pre></div>
+
+<p>See <a href="Assignment-Expressions.html">Assignment Expressions</a>.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Structure-Constructors.html
===================================================================
--- public/doc/gnu-c/Structure-Constructors.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Structure-Constructors.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,119 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Structure Constructors (GNU C Language Manual)</title>
+
+<meta name="description" content="Structure Constructors (GNU C Language Manual)">
+<meta name="keywords" content="Structure Constructors (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Structures.html" rel="up" title="Structures">
+<link href="Unnamed-Types-as-Fields.html" rel="next" title="Unnamed Types as Fields">
+<link href="Cast-to-Union.html" rel="prev" title="Cast to Union">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Structure-Constructors"></span><div class="header">
+<p>
+Next: <a href="Unnamed-Types-as-Fields.html" accesskey="n" rel="next">Unnamed Types as Fields</a>, Previous: <a href="Cast-to-Union.html" accesskey="p" rel="prev">Cast to Union</a>, Up: <a href="Structures.html" accesskey="u" rel="up">Structures</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>
+</div>
+<hr>
+<span id="Structure-Constructors-1"></span><h3 class="section">15.16 Structure Constructors</h3>
+<span id="index-structure-constructors"></span>
+<span id="index-constructors_002c-structure"></span>
+
+<p>You can construct a structure value by writing its type in
+parentheses, followed by an initializer that would be valid in a
+declaration for that type.  For instance, given this declaration,
+</p>
+<div class="example">
+<pre class="example">struct foo {int a; char b[2];} structure;
+</pre></div>
+
+<p>you can create a <code>struct foo</code> value as follows:
+</p>
+<div class="example">
+<pre class="example">((struct foo) {x + y, 'a', 0})
+</pre></div>
+
+<p>This specifies <code>x + y</code> for field <code>a</code>,
+the character &lsquo;<samp>a</samp>&rsquo; for field <code>b</code>&rsquo;s element 0,
+and the null character for field <code>b</code>&rsquo;s element 1.
+</p>
+<p>The parentheses around that constructor are to necessary, but we
+recommend writing them to make the nesting of the containing
+expression clearer.
+</p>
+<p>You can also show the nesting of the two by writing it like
+this:
+</p>
+<div class="example">
+<pre class="example">((struct foo) {x + y, {'a', 0} })
+</pre></div>
+
+<p>Each of those is equivalent to writing the following statement
+expression (see <a href="Statement-Exprs.html">Statement Exprs</a>):
+</p>
+<div class="example">
+<pre class="example">({
+  struct foo temp = {x + y, 'a', 0};
+  temp;
+})
+</pre></div>
+
+<p>You can also create a union value this way, but it is not especially
+useful since that is equivalent to doing a cast:
+</p>
+<div class="example">
+<pre class="example">  ((union whosis) {<var>value</var>})
+<span class="roman">is equivalent to</span>
+  ((union whosis) (<var>value</var>))
+</pre></div>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Structure-Layout.html
===================================================================
--- public/doc/gnu-c/Structure-Layout.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Structure-Layout.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,137 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Structure Layout (GNU C Language Manual)</title>
+
+<meta name="description" content="Structure Layout (GNU C Language Manual)">
+<meta name="keywords" content="Structure Layout (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Structures.html" rel="up" title="Structures">
+<link href="Packed-Structures.html" rel="next" title="Packed Structures">
+<link href="Field-Offset.html" rel="prev" title="Field Offset">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Structure-Layout"></span><div class="header">
+<p>
+Next: <a href="Packed-Structures.html" accesskey="n" rel="next">Packed Structures</a>, Previous: <a href="Field-Offset.html" accesskey="p" rel="prev">Field Offset</a>, Up: <a href="Structures.html" accesskey="u" rel="up">Structures</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>
+</div>
+<hr>
+<span id="Structure-Layout-1"></span><h3 class="section">15.4 Structure Layout</h3>
+<span id="index-structure-layout"></span>
+<span id="index-layout-of-structures"></span>
+
+<p>The rest of this chapter covers advanced topics about structures.  If
+you are just learning C, you can skip it.
+</p>
+<p>The precise layout of a <code>struct</code> type is crucial when using it to
+overlay hardware registers, to access data structures in shared
+memory, or to assemble and disassemble packets for network
+communication.  It is also important for avoiding memory waste when
+the program makes many objects of that type.  However, the layout
+depends on the target platform.  Each platform has conventions for
+structure layout, which compilers need to follow.
+</p>
+<p>Here are the conventions used on most platforms.
+</p>
+<p>The structure&rsquo;s fields appear in the structure layout in the order
+they are declared.  When possible, consecutive fields occupy
+consecutive bytes within the structure.  However, if a field&rsquo;s type
+demands more alignment than it would get that way, C gives it the
+alignment it requires by leaving a gap after the previous field.
+</p>
+<p>Once all the fields have been laid out, it is possible to determine
+the structure&rsquo;s alignment and size.  The structure&rsquo;s alignment is the
+maximum alignment of any of the fields in it.  Then the structure&rsquo;s
+size is rounded up to a multiple of its alignment.  That may require
+leaving a gap at the end of the structure.
+</p>
+<p>Here are some examples, where we assume that <code>char</code> has size and
+alignment 1 (always true), and <code>int</code> has size and alignment 4
+(true on most kinds of computers):
+</p>
+<div class="example">
+<pre class="example">struct foo
+{
+  char a, b;
+  int c;
+};
+</pre></div>
+
+<p>This structure occupies 8 bytes, with an alignment of 4.  <code>a</code> is
+at offset 0, <code>b</code> is at offset 1, and <code>c</code> is at offset 4.
+There is a gap of 2 bytes before <code>c</code>.
+</p>
+<p>Contrast that with this structure:
+</p>
+<div class="example">
+<pre class="example">struct foo
+{
+  char a;
+  int c;
+  char b;
+};
+</pre></div>
+
+<p>This structure has size 12 and alignment 4.  <code>a</code> is at offset 0,
+<code>c</code> is at offset 4, and <code>b</code> is at offset 8.  There are two
+gaps: three bytes before <code>c</code>, and three bytes at the end.
+</p>
+<p>These two structures have the same contents at the C level, but one
+takes 8 bytes and the other takes 12 bytes due to the ordering of the
+fields.  A reliable way to avoid this sort of wastage is to order the
+fields by size, biggest fields first.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Packed-Structures.html" accesskey="n" rel="next">Packed Structures</a>, Previous: <a href="Field-Offset.html" accesskey="p" rel="prev">Field Offset</a>, Up: <a href="Structures.html" accesskey="u" rel="up">Structures</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Structures.html
===================================================================
--- public/doc/gnu-c/Structures.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Structures.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,211 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Structures (GNU C Language Manual)</title>
+
+<meta name="description" content="Structures (GNU C Language Manual)">
+<meta name="keywords" content="Structures (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html" rel="up" title="Top">
+<link href="Referencing-Fields.html" rel="next" title="Referencing Fields">
+<link href="Printing-Pointers.html" rel="prev" title="Printing Pointers">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Structures"></span><div class="header">
+<p>
+Next: <a href="Arrays.html" accesskey="n" rel="next">Arrays</a>, Previous: <a href="Pointers.html" accesskey="p" rel="prev">Pointers</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</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>
+</div>
+<hr>
+<span id="Structures-1"></span><h2 class="chapter">15 Structures</h2>
+<span id="index-structures"></span>
+<span id="index-struct"></span>
+<span id="index-fields-in-structures"></span>
+
+<p>A <em>structure</em> is a user-defined data type that holds various
+<em>fields</em> of data.  Each field has a name and a data type specified
+in the structure&rsquo;s definition.
+</p>
+<p>Here we define a structure suitable for storing a linked list of
+integers.  Each list item will hold one integer, plus a pointer
+to the next item.
+</p>
+<div class="example">
+<pre class="example">struct intlistlink
+  {
+    int datum;
+    struct intlistlink *next;
+  };
+</pre></div>
+
+<p>The structure definition has a <em>type tag</em> so that the code can
+refer to this structure.  The type tag here is <code>intlistlink</code>.
+The definition refers recursively to the same structure through that
+tag.
+</p>
+<p>You can define a structure without a type tag, but then you can&rsquo;t
+refer to it again.  That is useful only in some special contexts, such
+as inside a <code>typedef</code> or a <code>union</code>.
+</p>
+<p>The contents of the structure are specified by the <em>field
+declarations</em> inside the braces.  Each field in the structure needs a
+declaration there.  The fields in one structure definition must have
+distinct names, but these names do not conflict with any other names
+in the program.
+</p>
+<p>A field declaration looks just like a variable declaration.  You can
+combine field declarations with the same beginning, just as you can
+combine variable declarations.
+</p>
+<p>This structure has two fields.  One, named <code>datum</code>, has type
+<code>int</code> and will hold one integer in the list.  The other, named
+<code>next</code>, is a pointer to another <code>struct intlistlink</code>
+which would be the rest of the list.  In the last list item, it would
+be <code>NULL</code>.
+</p>
+<p>This structure definition is recursive, since the type of the
+<code>next</code> field refers to the structure type.  Such recursion is not
+a problem; in fact, you can use the type <code>struct intlistlink *</code>
+before the definition of the type <code>struct intlistlink</code> itself.
+That works because pointers to all kinds of structures really look the
+same at the machine level.
+</p>
+<p>After defining the structure, you can declare a variable of type
+<code>struct intlistlink</code> like this:
+</p>
+<div class="example">
+<pre class="example">struct intlistlink foo;
+</pre></div>
+
+<p>The structure definition itself can serve as the beginning of a
+variable declaration, so you can declare variables immediately after,
+like this:
+</p>
+<div class="example">
+<pre class="example">struct intlistlink
+  {
+    int datum;
+    struct intlistlink *next;
+  } foo;
+</pre></div>
+
+<p>But that is ugly.  It is almost always clearer to separate the
+definition of the structure from its uses.
+</p>
+<p>Declaring a structure type inside a block (see <a href="Blocks.html">Blocks</a>) limits
+the scope of the structure type name to that block.  That means the
+structure type is recognized only within that block.  Declaring it in
+a function parameter list, as here,
+</p>
+<div class="example">
+<pre class="example">int f (struct foo {int a, b} parm);
+</pre></div>
+
+<p>(assuming that <code>struct foo</code> is not already defined) limits the
+scope of the structure type <code>struct foo</code> to that parameter list;
+that is basically useless, so it triggers a warning.
+</p>
+<p>Standard C requires at least one field in a structure.
+GNU C does not require this.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Referencing-Fields.html" accesskey="1">Referencing Fields</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Accessing field values in a structure object.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Dynamic-Memory-Allocation.html" accesskey="2">Dynamic Memory Allocation</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Allocating space for objects
+                                   while the program is running.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Field-Offset.html" accesskey="3">Field Offset</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Memory layout of fields within a structure.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Structure-Layout.html" accesskey="4">Structure Layout</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Planning the memory layout of fields.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Packed-Structures.html" accesskey="5">Packed Structures</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Packing structure fields as close as possible.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Bit-Fields.html" accesskey="6">Bit Fields</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Dividing integer fields
+                                   into fields with fewer bits.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Bit-Field-Packing.html" accesskey="7">Bit Field Packing</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How bit fields pack together in integers.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="const-Fields.html" accesskey="8">const Fields</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Making structure fields immutable.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Zero-Length.html" accesskey="9">Zero Length</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Zero-length array as a variable-length object.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Flexible-Array-Fields.html">Flexible Array Fields</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Another approach to variable-length objects.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Overlaying-Structures.html">Overlaying Structures</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Casting one structure type 
+                                   over an object of another structure type.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Structure-Assignment.html">Structure Assignment</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Assigning values to structure objects.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Unions.html">Unions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Viewing the same object in different types.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Packing-With-Unions.html">Packing With Unions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Using a union type to pack various types into
+                                   the same memory space.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Cast-to-Union.html">Cast to Union</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Casting a value one of the union&rsquo;s alternative
+                                   types to the type of the union itself.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Structure-Constructors.html">Structure Constructors</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Building new structure objects.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Unnamed-Types-as-Fields.html">Unnamed Types as Fields</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Fields&rsquo; types do not always need names.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Incomplete-Types.html">Incomplete Types</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Types which have not been fully defined.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Intertwined-Incomplete-Types.html">Intertwined Incomplete Types</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Defining mutually-recursive structue types.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Type-Tags.html">Type Tags</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Scope of structure and union type tags.
+</td></tr>
+</table>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Arrays.html" accesskey="n" rel="next">Arrays</a>, Previous: <a href="Pointers.html" accesskey="p" rel="prev">Pointers</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Swallowing-the-Semicolon.html
===================================================================
--- public/doc/gnu-c/Swallowing-the-Semicolon.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Swallowing-the-Semicolon.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,133 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Swallowing the Semicolon (GNU C Language Manual)</title>
+
+<meta name="description" content="Swallowing the Semicolon (GNU C Language Manual)">
+<meta name="keywords" content="Swallowing the Semicolon (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Macro-Pitfalls.html" rel="up" title="Macro Pitfalls">
+<link href="Duplication-of-Side-Effects.html" rel="next" title="Duplication of Side Effects">
+<link href="Operator-Precedence-Problems.html" rel="prev" title="Operator Precedence Problems">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Swallowing-the-Semicolon"></span><div class="header">
+<p>
+Next: <a href="Duplication-of-Side-Effects.html" accesskey="n" rel="next">Duplication of Side Effects</a>, Previous: <a href="Operator-Precedence-Problems.html" accesskey="p" rel="prev">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>
+</div>
+<hr>
+<span id="Swallowing-the-Semicolon-1"></span><h4 class="subsubsection">26.5.10.3 Swallowing the Semicolon</h4>
+<span id="index-semicolons-_0028after-macro-calls_0029"></span>
+
+<p>Often it is desirable to define a macro that expands into a compound
+statement.  Consider, for example, the following macro, that advances a
+pointer (the parameter <code>p</code> says where to find it) across whitespace
+characters:
+</p>
+<div class="example">
+<pre class="example">#define SKIP_SPACES(p, limit)  \
+{ char *lim = (limit);         \
+  while (p &lt; lim) {            \
+    if (*p++ != ' ') {         \
+      p--; break; }}}
+</pre></div>
+
+<p>Here backslash-newline is used to split the macro definition, which must
+be a single logical line, so that it resembles the way such code would
+be laid out if not part of a macro definition.
+</p>
+<p>A call to this macro might be <code>SKIP_SPACES (p, lim)</code>.  Strictly
+speaking, the call expands to a compound statement, which is a complete
+statement with no need for a semicolon to end it.  However, since it
+looks like a function call, it minimizes confusion if you can use it
+like a function call, writing a semicolon afterward, as in
+<code>SKIP_SPACES (p, lim);</code>
+</p>
+<p>This can cause trouble before <code>else</code> statements, because the
+semicolon is actually a null statement.  Suppose you write
+</p>
+<div class="example">
+<pre class="example">if (*p != 0)
+  SKIP_SPACES (p, lim);
+else /* <span class="roman">&hellip;</span> */
+</pre></div>
+
+<p>The presence of two statements&mdash;the compound statement and a null
+statement&mdash;in between the <code>if</code> condition and the <code>else</code>
+makes invalid C code.
+</p>
+<p>The definition of the macro <code>SKIP_SPACES</code> can be altered to solve
+this problem, using a <code>do <span class="roman">&hellip;</span> while</code> statement.  Here is how:
+</p>
+<div class="example">
+<pre class="example">#define SKIP_SPACES(p, limit)     \
+do { char *lim = (limit);         \
+     while (p &lt; lim) {            \
+       if (*p++ != ' ') {         \
+         p--; break; }}}          \
+while (0)
+</pre></div>
+
+<p>Now <code>SKIP_SPACES (p, lim);</code> expands into
+</p>
+<div class="example">
+<pre class="example">do { /* <span class="roman">&hellip;</span> */ } while (0);
+</pre></div>
+
+<p>which is one statement.  The loop executes exactly once; most compilers
+generate no extra code for it.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Duplication-of-Side-Effects.html" accesskey="n" rel="next">Duplication of Side Effects</a>, Previous: <a href="Operator-Precedence-Problems.html" accesskey="p" rel="prev">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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Symbol-Index.html
===================================================================
--- public/doc/gnu-c/Symbol-Index.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Symbol-Index.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,278 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Symbol Index (GNU C Language Manual)</title>
+
+<meta name="description" content="Symbol Index (GNU C Language Manual)">
+<meta name="keywords" content="Symbol Index (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="#Symbol-Index" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html" rel="up" title="Top">
+<link href="Concept-Index.html" rel="next" title="Concept Index">
+<link href="GNU-Free-Documentation-License.html" rel="prev" title="GNU Free Documentation License">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Symbol-Index"></span><div class="header">
+<p>
+Next: <a href="Concept-Index.html" accesskey="n" rel="next">Concept Index</a>, Previous: <a href="GNU-Free-Documentation-License.html" accesskey="p" rel="prev">GNU Free Documentation License</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Symbol-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<span id="Index-of-Symbols-and-Keywords"></span><h2 class="unnumbered">Index of Symbols and Keywords</h2>
+
+<table><tr><th valign="top">Jump to: &nbsp; </th><td><a class="summary-letter" href="#Symbol-Index_fn_symbol-1"><b>#</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Symbol-Index_fn_symbol-2"><b>_</b></a>
+ &nbsp; 
+<br>
+<a class="summary-letter" href="#Symbol-Index_fn_letter-A"><b>A</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Symbol-Index_fn_letter-B"><b>B</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Symbol-Index_fn_letter-C"><b>C</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Symbol-Index_fn_letter-D"><b>D</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Symbol-Index_fn_letter-E"><b>E</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Symbol-Index_fn_letter-F"><b>F</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Symbol-Index_fn_letter-G"><b>G</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Symbol-Index_fn_letter-I"><b>I</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Symbol-Index_fn_letter-L"><b>L</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Symbol-Index_fn_letter-M"><b>M</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Symbol-Index_fn_letter-R"><b>R</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Symbol-Index_fn_letter-S"><b>S</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Symbol-Index_fn_letter-T"><b>T</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Symbol-Index_fn_letter-U"><b>U</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Symbol-Index_fn_letter-V"><b>V</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Symbol-Index_fn_letter-W"><b>W</b></a>
+ &nbsp; 
+</td></tr></table>
+<table class="index-fn" border="0">
+<tr><td></td><th align="left">Index Entry</th><td>&nbsp;</td><th align="left"> Section</th></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Symbol-Index_fn_symbol-1">#</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Object_002dlike-Macros.html#index-_0023define"><code>#define</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Object_002dlike-Macros.html">Object-like Macros</a></td></tr>
+<tr><td></td><td valign="top"><a href="elif.html#index-_0023elif"><code>#elif</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="elif.html">elif</a></td></tr>
+<tr><td></td><td valign="top"><a href="else.html#index-_0023else"><code>#else</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="else.html">else</a></td></tr>
+<tr><td></td><td valign="top"><a href="ifdef.html#index-_0023endif"><code>#endif</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="ifdef.html">ifdef</a></td></tr>
+<tr><td></td><td valign="top"><a href="Diagnostics.html#index-_0023error"><code>#error</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Diagnostics.html">Diagnostics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Conditional-Syntax.html#index-_0023if"><code>#if</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Conditional-Syntax.html">Conditional Syntax</a></td></tr>
+<tr><td></td><td valign="top"><a href="ifdef.html#index-_0023ifdef"><code>#ifdef</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="ifdef.html">ifdef</a></td></tr>
+<tr><td></td><td valign="top"><a href="ifdef.html#index-_0023ifndef"><code>#ifndef</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="ifdef.html">ifdef</a></td></tr>
+<tr><td></td><td valign="top"><a href="include-Syntax.html#index-_0023include"><code>#include</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="include-Syntax.html">include Syntax</a></td></tr>
+<tr><td></td><td valign="top"><a href="Line-Control.html#index-_0023line"><code>#line</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Line-Control.html">Line Control</a></td></tr>
+<tr><td></td><td valign="top"><a href="Undefining-and-Redefining-Macros.html#index-_0023undef"><code>#undef</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Undefining-and-Redefining-Macros.html">Undefining and Redefining Macros</a></td></tr>
+<tr><td></td><td valign="top"><a href="Diagnostics.html#index-_0023warning"><code>#warning</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Diagnostics.html">Diagnostics</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Symbol-Index_fn_symbol-2">_</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Alignment.html#index-_005fAlignas"><code>_Alignas</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Alignment.html">Type Alignment</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Alignment.html#index-_005fAlignof"><code>_Alignof</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Alignment.html">Type Alignment</a></td></tr>
+<tr><td></td><td valign="top"><a href="Complex-Data-Types.html#index-_005fComplex"><code>_Complex</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Complex-Data-Types.html">Complex Data Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Static-Assertions.html#index-_005fStatic_005fassert"><code>_Static_assert</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Static-Assertions.html">Static Assertions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Alignment.html#index-_005f_005faligned_005f_005f"><code>__aligned__</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Alignment.html">Type Alignment</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Alignment.html#index-_005f_005falignof_005f_005f"><code>__alignof__</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Alignment.html">Type Alignment</a></td></tr>
+<tr><td></td><td valign="top"><a href="Attributes.html#index-_005f_005fattribute_005f_005f"><code>__attribute__</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Attributes.html">Attributes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Auto-Type.html#index-_005f_005fauto_005ftype"><code>__auto_type</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Auto-Type.html">Auto Type</a></td></tr>
+<tr><td></td><td valign="top"><a href="Complex-Data-Types.html#index-_005f_005fcomplex_005f_005f"><code>__complex__</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Complex-Data-Types.html">Complex Data Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Local-Labels.html#index-_005f_005flabel_005f_005f"><code>__label__</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Local-Labels.html">Local Labels</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Symbol-Index_fn_letter-A">A</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="auto-and-register.html#index-auto"><code>auto</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="auto-and-register.html">auto and register</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Symbol-Index_fn_letter-B">B</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Boolean-Type.html#index-bool"><code>bool</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Boolean-Type.html">Boolean Type</a></td></tr>
+<tr><td></td><td valign="top"><a href="break-Statement.html#index-break"><code>break</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="break-Statement.html">break Statement</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Symbol-Index_fn_letter-C">C</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="switch-Statement.html#index-case"><code>case</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="switch-Statement.html">switch Statement</a></td></tr>
+<tr><td></td><td valign="top"><a href="Basic-Integers.html#index-char"><code>char</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Basic-Integers.html">Basic Integers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Maximum-and-Minimum-Values.html#index-CHAR_005fMAX"><code>CHAR_MAX</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Maximum-and-Minimum-Values.html">Maximum and Minimum Values</a></td></tr>
+<tr><td></td><td valign="top"><a href="const.html#index-const"><code>const</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="const.html">const</a></td></tr>
+<tr><td></td><td valign="top"><a href="continue-Statement.html#index-continue"><code>continue</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="continue-Statement.html">continue Statement</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Symbol-Index_fn_letter-D">D</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Floating-Type-Specs.html#index-DBL_005fDECIMAL_005fDIG"><code>DBL_DECIMAL_DIG</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Floating-Type-Specs.html">Floating Type Specs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Floating-Type-Specs.html#index-DBL_005fHAS_005fSUBNORM"><code>DBL_HAS_SUBNORM</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Floating-Type-Specs.html">Floating Type Specs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Floating-Type-Specs.html#index-DBL_005fMAX"><code>DBL_MAX</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Floating-Type-Specs.html">Floating Type Specs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Floating-Type-Specs.html#index-DBL_005fMIN"><code>DBL_MIN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Floating-Type-Specs.html">Floating Type Specs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Floating-Type-Specs.html#index-DBL_005fTRUE_005fMIN"><code>DBL_TRUE_MIN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Floating-Type-Specs.html">Floating Type Specs</a></td></tr>
+<tr><td></td><td valign="top"><a href="switch-Statement.html#index-default"><code>default</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="switch-Statement.html">switch Statement</a></td></tr>
+<tr><td></td><td valign="top"><a href="do_002dwhile-Statement.html#index-do"><code>do</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="do_002dwhile-Statement.html">do-while Statement</a></td></tr>
+<tr><td></td><td valign="top"><a href="Floating_002dPoint-Data-Types.html#index-double"><code>double</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Floating_002dPoint-Data-Types.html">Floating-Point Data Types</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Symbol-Index_fn_letter-E">E</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="if_002delse-Statement.html#index-else"><code>else</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="if_002delse-Statement.html">if-else Statement</a></td></tr>
+<tr><td></td><td valign="top"><a href="Extern-Declarations.html#index-extern"><code>extern</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Extern-Declarations.html">Extern Declarations</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Symbol-Index_fn_letter-F">F</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Floating_002dPoint-Data-Types.html#index-float"><code>float</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Floating_002dPoint-Data-Types.html">Floating-Point Data Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Floating-Type-Specs.html#index-FLT_005fDECIMAL_005fDIG"><code>FLT_DECIMAL_DIG</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Floating-Type-Specs.html">Floating Type Specs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Floating-Type-Specs.html#index-FLT_005fHAS_005fSUBNORM"><code>FLT_HAS_SUBNORM</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Floating-Type-Specs.html">Floating Type Specs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Floating-Type-Specs.html#index-FLT_005fMAX"><code>FLT_MAX</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Floating-Type-Specs.html">Floating Type Specs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Floating-Type-Specs.html#index-FLT_005fMIN"><code>FLT_MIN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Floating-Type-Specs.html">Floating Type Specs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Floating-Type-Specs.html#index-FLT_005fTRUE_005fMIN"><code>FLT_TRUE_MIN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Floating-Type-Specs.html">Floating Type Specs</a></td></tr>
+<tr><td></td><td valign="top"><a href="for-Statement.html#index-for"><code>for</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="for-Statement.html">for Statement</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Symbol-Index_fn_letter-G">G</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="goto-Statement.html#index-goto"><code>goto</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="goto-Statement.html">goto Statement</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Symbol-Index_fn_letter-I">I</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="if-Statement.html#index-if"><code>if</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="if-Statement.html">if Statement</a></td></tr>
+<tr><td></td><td valign="top"><a href="Inline-Function-Definitions.html#index-inline"><code>inline</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Inline-Function-Definitions.html">Inline Function Definitions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Basic-Integers.html#index-int"><code>int</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Basic-Integers.html">Basic Integers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Maximum-and-Minimum-Values.html#index-INT_005fMAX"><code>INT_MAX</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Maximum-and-Minimum-Values.html">Maximum and Minimum Values</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Symbol-Index_fn_letter-L">L</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Floating-Type-Specs.html#index-LDBL_005fDECIMAL_005fDIG"><code>LDBL_DECIMAL_DIG</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Floating-Type-Specs.html">Floating Type Specs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Floating-Type-Specs.html#index-LDBL_005fHAS_005fSUBNORM"><code>LDBL_HAS_SUBNORM</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Floating-Type-Specs.html">Floating Type Specs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Floating-Type-Specs.html#index-LDBL_005fMAX"><code>LDBL_MAX</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Floating-Type-Specs.html">Floating Type Specs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Floating-Type-Specs.html#index-LDBL_005fMIN"><code>LDBL_MIN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Floating-Type-Specs.html">Floating Type Specs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Floating-Type-Specs.html#index-LDBL_005fTRUE_005fMIN"><code>LDBL_TRUE_MIN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Floating-Type-Specs.html">Floating Type Specs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Maximum-and-Minimum-Values.html#index-LLONG_005fMAX"><code>LLONG_MAX</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Maximum-and-Minimum-Values.html">Maximum and Minimum Values</a></td></tr>
+<tr><td></td><td valign="top"><a href="Floating_002dPoint-Data-Types.html#index-long-double"><code>long double</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Floating_002dPoint-Data-Types.html">Floating-Point Data Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Basic-Integers.html#index-long-int"><code>long int</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Basic-Integers.html">Basic Integers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Basic-Integers.html#index-long-long-int"><code>long long int</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Basic-Integers.html">Basic Integers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Maximum-and-Minimum-Values.html#index-LONG_005fMAX"><code>LONG_MAX</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Maximum-and-Minimum-Values.html">Maximum and Minimum Values</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Symbol-Index_fn_letter-M">M</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="The-main-Function.html#index-main"><code>main</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="The-main-Function.html">The main Function</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Symbol-Index_fn_letter-R">R</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="auto-and-register.html#index-register"><code>register</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="auto-and-register.html">auto and register</a></td></tr>
+<tr><td></td><td valign="top"><a href="restrict-Pointers.html#index-restrict"><code>restrict</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="restrict-Pointers.html">restrict Pointers</a></td></tr>
+<tr><td></td><td valign="top"><a href="return-Statement.html#index-return"><code>return</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="return-Statement.html">return Statement</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Symbol-Index_fn_letter-S">S</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Maximum-and-Minimum-Values.html#index-SCHAR_005fMAX"><code>SCHAR_MAX</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Maximum-and-Minimum-Values.html">Maximum and Minimum Values</a></td></tr>
+<tr><td></td><td valign="top"><a href="Basic-Integers.html#index-short-int"><code>short int</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Basic-Integers.html">Basic Integers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Maximum-and-Minimum-Values.html#index-SHRT_005fMAX"><code>SHRT_MAX</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Maximum-and-Minimum-Values.html">Maximum and Minimum Values</a></td></tr>
+<tr><td></td><td valign="top"><a href="Signed-and-Unsigned-Types.html#index-signed"><code>signed</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Signed-and-Unsigned-Types.html">Signed and Unsigned Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Size.html#index-sizeof"><code>sizeof</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Size.html">Type Size</a></td></tr>
+<tr><td></td><td valign="top"><a href="Static-Local-Variables.html#index-static"><code>static</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Static-Local-Variables.html">Static Local Variables</a></td></tr>
+<tr><td></td><td valign="top"><a href="Static-Functions.html#index-static-1"><code>static</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Static-Functions.html">Static Functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Structures.html#index-struct"><code>struct</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Structures.html">Structures</a></td></tr>
+<tr><td></td><td valign="top"><a href="switch-Statement.html#index-switch"><code>switch</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="switch-Statement.html">switch Statement</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Symbol-Index_fn_letter-T">T</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Defining-Typedef-Names.html#index-typedef"><code>typedef</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Defining-Typedef-Names.html">Defining Typedef Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Auto-Type.html#index-typeof"><code>typeof</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Auto-Type.html">Auto Type</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Symbol-Index_fn_letter-U">U</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Maximum-and-Minimum-Values.html#index-UCHAR_005fMAX"><code>UCHAR_MAX</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Maximum-and-Minimum-Values.html">Maximum and Minimum Values</a></td></tr>
+<tr><td></td><td valign="top"><a href="Maximum-and-Minimum-Values.html#index-UINT_005fMAX"><code>UINT_MAX</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Maximum-and-Minimum-Values.html">Maximum and Minimum Values</a></td></tr>
+<tr><td></td><td valign="top"><a href="Maximum-and-Minimum-Values.html#index-ULLONG_005fMAX"><code>ULLONG_MAX</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Maximum-and-Minimum-Values.html">Maximum and Minimum Values</a></td></tr>
+<tr><td></td><td valign="top"><a href="Maximum-and-Minimum-Values.html#index-ULONG_005fMAX"><code>ULONG_MAX</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Maximum-and-Minimum-Values.html">Maximum and Minimum Values</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unions.html#index-union"><code>union</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unions.html">Unions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Signed-and-Unsigned-Types.html#index-unsigned"><code>unsigned</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Signed-and-Unsigned-Types.html">Signed and Unsigned Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Maximum-and-Minimum-Values.html#index-USHRT_005fMAX"><code>USHRT_MAX</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Maximum-and-Minimum-Values.html">Maximum and Minimum Values</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Symbol-Index_fn_letter-V">V</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="The-Void-Type.html#index-void"><code>void</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="The-Void-Type.html">The Void Type</a></td></tr>
+<tr><td></td><td valign="top"><a href="volatile.html#index-volatile"><code>volatile</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="volatile.html">volatile</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Symbol-Index_fn_letter-W">W</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="while-Statement.html#index-while"><code>while</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="while-Statement.html">while Statement</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+</table>
+<table><tr><th valign="top">Jump to: &nbsp; </th><td><a class="summary-letter" href="#Symbol-Index_fn_symbol-1"><b>#</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Symbol-Index_fn_symbol-2"><b>_</b></a>
+ &nbsp; 
+<br>
+<a class="summary-letter" href="#Symbol-Index_fn_letter-A"><b>A</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Symbol-Index_fn_letter-B"><b>B</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Symbol-Index_fn_letter-C"><b>C</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Symbol-Index_fn_letter-D"><b>D</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Symbol-Index_fn_letter-E"><b>E</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Symbol-Index_fn_letter-F"><b>F</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Symbol-Index_fn_letter-G"><b>G</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Symbol-Index_fn_letter-I"><b>I</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Symbol-Index_fn_letter-L"><b>L</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Symbol-Index_fn_letter-M"><b>M</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Symbol-Index_fn_letter-R"><b>R</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Symbol-Index_fn_letter-S"><b>S</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Symbol-Index_fn_letter-T"><b>T</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Symbol-Index_fn_letter-U"><b>U</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Symbol-Index_fn_letter-V"><b>V</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Symbol-Index_fn_letter-W"><b>W</b></a>
+ &nbsp; 
+</td></tr></table>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Concept-Index.html" accesskey="n" rel="next">Concept Index</a>, Previous: <a href="GNU-Free-Documentation-License.html" accesskey="p" rel="prev">GNU Free Documentation License</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Symbol-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/The-First-Example.html
===================================================================
--- public/doc/gnu-c/The-First-Example.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/The-First-Example.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,83 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>The First Example (GNU C Language Manual)</title>
+
+<meta name="description" content="The First Example (GNU C Language Manual)">
+<meta name="keywords" content="The First Example (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html" rel="up" title="Top">
+<link href="Recursive-Fibonacci.html" rel="next" title="Recursive Fibonacci">
+<link href="index.html" rel="prev" title="Top">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="The-First-Example"></span><div class="header">
+<p>
+Next: <a href="Complete-Program.html" accesskey="n" rel="next">Complete Program</a>, Previous: <a href="index.html" accesskey="p" rel="prev">Top</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</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>
+</div>
+<hr>
+<span id="The-First-Example-1"></span><h2 class="chapter">1 The First Example</h2>
+
+<p>This chapter presents the source code for a very simple C program and
+uses it to explain a few features of the language.  If you already
+know the basic points of C presented in this chapter, you can skim it
+or skip it.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Recursive-Fibonacci.html" accesskey="1">Recursive Fibonacci</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Writing a simple function recursively.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Stack.html" accesskey="2">Stack</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Each function call uses space in the stack.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Iterative-Fibonacci.html" accesskey="3">Iterative Fibonacci</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Writing the same function iteratively.
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/The-Void-Type.html
===================================================================
--- public/doc/gnu-c/The-Void-Type.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/The-Void-Type.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,94 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>The Void Type (GNU C Language Manual)</title>
+
+<meta name="description" content="The Void Type (GNU C Language Manual)">
+<meta name="keywords" content="The Void Type (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Primitive-Types.html" rel="up" title="Primitive Types">
+<link href="Other-Data-Types.html" rel="next" title="Other Data Types">
+<link href="Complex-Data-Types.html" rel="prev" title="Complex Data Types">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="The-Void-Type"></span><div class="header">
+<p>
+Next: <a href="Other-Data-Types.html" accesskey="n" rel="next">Other Data Types</a>, Previous: <a href="Complex-Data-Types.html" accesskey="p" rel="prev">Complex Data Types</a>, Up: <a href="Primitive-Types.html" accesskey="u" rel="up">Primitive Types</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>
+</div>
+<hr>
+<span id="The-Void-Type-1"></span><h3 class="section">11.4 The Void Type</h3>
+<span id="index-void-type"></span>
+<span id="index-type_002c-void"></span>
+<span id="index-void"></span>
+
+<p>The data type <code>void</code> is a dummy&mdash;it allows no operations.  It
+really means &ldquo;no value at all.&rdquo;  When a function is meant to return
+no value, we write <code>void</code> for its return type.  Then
+<code>return</code> statements in that function should not specify a value
+(see <a href="return-Statement.html">return Statement</a>).  Here&rsquo;s an example:
+</p>
+<div class="example">
+<pre class="example">void
+print_if_positive (double x, double y)
+{
+  if (x &lt;= 0)
+    return;
+  if (y &lt;= 0)
+    return;
+  printf (&quot;Next point is (%f,%f)\n&quot;, x, y);
+}
+</pre></div>
+
+<p>A <code>void</code>-returning function is comparable to what some other languages
+call a &ldquo;procedure&rdquo; instead of a &ldquo;function.&rdquo;
+</p>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/The-main-Function.html
===================================================================
--- public/doc/gnu-c/The-main-Function.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/The-main-Function.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,115 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>The main Function (GNU C Language Manual)</title>
+
+<meta name="description" content="The main Function (GNU C Language Manual)">
+<meta name="keywords" content="The main Function (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Functions.html" rel="up" title="Functions">
+<link href="Values-from-main.html" rel="next" title="Values from main">
+<link href="Calling-Function-Pointers.html" rel="prev" title="Calling Function Pointers">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="The-main-Function"></span><div class="header">
+<p>
+Next: <a href="Advanced-Definitions.html" accesskey="n" rel="next">Advanced Definitions</a>, Previous: <a href="Function-Pointers.html" accesskey="p" rel="prev">Function Pointers</a>, Up: <a href="Functions.html" accesskey="u" rel="up">Functions</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>
+</div>
+<hr>
+<span id="The-main-Function-1"></span><h3 class="section">22.6 The <code>main</code> Function</h3>
+<span id="index-main-function"></span>
+<span id="index-main"></span>
+
+<p>Every complete executable program requires at least one function,
+called <code>main</code>, which is where execution begins.  You do not have
+to explicitly declare <code>main</code>, though GNU C permits you to do so.
+Conventionally, <code>main</code> should be defined to follow one of these
+calling conventions:
+</p>
+<div class="example">
+<pre class="example">int main (void) {<span class="roman">&hellip;</span>}
+int main (int argc, char *argv[]) {<span class="roman">&hellip;</span>}
+int main (int argc, char *argv[], char *envp[]) {<span class="roman">&hellip;</span>}
+</pre></div>
+
+<p>Using <code>void</code> as the parameter list means that <code>main</code> does
+not use the arguments.  You can write <code>char **argv</code> instead of
+<code>char *argv[]</code>, and likewise for <code>envp</code>, as the two
+constructs are equivalent.
+</p>
+
+<p>You can call <code>main</code> from C code, as you can call any other
+function, though that is an unusual thing to do.  When you do that,
+you must write the call to pass arguments that match the parameters in
+the definition of <code>main</code>.
+</p>
+<p>The <code>main</code> function is not actually the first code that runs when
+a program starts.  In fact, the first code that runs is system code
+from the file <samp>crt0.o</samp>.  In Unix, this was hand-written assembler
+code, but in GNU we replaced it with C code.  Its job is to find
+the arguments for <code>main</code> and call that.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Values-from-main.html" accesskey="1">Values from main</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Returning values from the main function.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Command_002dline-Parameters.html" accesskey="2">Command-line Parameters</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Accessing command-line parameters
+                               provided to the program.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Environment-Variables.html" accesskey="3">Environment Variables</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Accessing system environment variables.
+</td></tr>
+</table>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Advanced-Definitions.html" accesskey="n" rel="next">Advanced Definitions</a>, Previous: <a href="Function-Pointers.html" accesskey="p" rel="prev">Function Pointers</a>, Up: <a href="Functions.html" accesskey="u" rel="up">Functions</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Type-Alignment.html
===================================================================
--- public/doc/gnu-c/Type-Alignment.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Type-Alignment.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,158 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Type Alignment (GNU C Language Manual)</title>
+
+<meta name="description" content="Type Alignment (GNU C Language Manual)">
+<meta name="keywords" content="Type Alignment (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html" rel="up" title="Top">
+<link href="Aliasing.html" rel="next" title="Aliasing">
+<link href="Static-Assertions.html" rel="prev" title="Static Assertions">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Type-Alignment"></span><div class="header">
+<p>
+Next: <a href="Aliasing.html" accesskey="n" rel="next">Aliasing</a>, Previous: <a href="Directing-Compilation.html" accesskey="p" rel="prev">Directing Compilation</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</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>
+</div>
+<hr>
+<span id="Type-Alignment-1"></span><h2 class="appendix">Appendix A Type Alignment</h2>
+<span id="index-type-alignment"></span>
+<span id="index-alignment-of-type"></span>
+<span id="index-_005fAlignof"></span>
+<span id="index-_005f_005falignof_005f_005f"></span>
+
+<p>Code for device drivers and other communication with low-level
+hardware sometimes needs to be concerned with the alignment of
+data objects in memory.
+</p>
+<p>Each data type has a required <em>alignment</em>, always a power of 2,
+that says at which memory addresses an object of that type can validly
+start.  A valid address for the type must be a multiple of its
+alignment.  If a type&rsquo;s alignment is 1, that means it can validly
+start at any address.  If a type&rsquo;s alignment is 2, that means it can
+only start at an even address.  If a type&rsquo;s alignment is 4, that means
+it can only start at an address that is a multiple of 4.
+</p>
+<p>The alignment of a type (except <code>char</code>) can vary depending on the
+kind of computer in use.  To refer to the alignment of a type in a C
+program, use <code>_Alignof</code>, whose syntax parallels that of
+<code>sizeof</code>.  Like <code>sizeof</code>, <code>_Alignof</code> is a compile-time
+operation, and it doesn&rsquo;t compute the value of the expression used
+as its argument.
+</p>
+<p>Nominally, each integer and floating-point type has an alignment equal to
+the largest power of 2 that divides its size.  Thus, <code>int</code> with
+size 4 has a nominal alignment of 4, and <code>long long int</code> with
+size 8 has a nominal alignment of 8.
+</p>
+<p>However, each kind of computer generally has a maximum alignment, and
+no type needs more alignment than that.  If the computer&rsquo;s maximum
+alignment is 4 (which is common), then no type&rsquo;s alignment is more
+than 4.
+</p>
+<p>The size of any type is always a multiple of its alignment; that way,
+in an array whose elements have that type, all the elements are
+properly aligned if the first one is.
+</p>
+<p>These rules apply to all real computers today, but some embedded
+controllers have odd exceptions.  We don&rsquo;t have references to cite for
+them.
+</p>
+<p>Ordinary C code guarantees that every object of a given type is in
+fact aligned as that type requires.
+</p>
+<p>If the operand of <code>_Alignof</code> is a structure field, the value
+is the alignment it requires.  It may have a greater alignment by
+coincidence, due to the other fields, but <code>_Alignof</code> is not
+concerned about that.  See <a href="Structures.html">Structures</a>.
+</p>
+<p>Older versions of GNU C used the keyword <code>__alignof__</code> for this,
+but now that the feature has been standardized, it is better
+to use the standard keyword <code>_Alignof</code>.
+</p>
+<span id="index-_005fAlignas"></span>
+<span id="index-_005f_005faligned_005f_005f"></span>
+<p>You can explicitly specify an alignment requirement for a particular
+variable or structure field by adding <code>_Alignas
+(<var>alignment</var>)</code> to the declaration, where <var>alignment</var> is a
+power of 2 or a type name.  For instance:
+</p>
+<div class="example">
+<pre class="example">char _Alignas (8) x;
+</pre></div>
+
+<p>or
+</p>
+<div class="example">
+<pre class="example">char _Alignas (double) x;
+</pre></div>
+
+<p>specifies that <code>x</code> must start on an address that is a multiple of
+8.  However, if <var>alignment</var> exceeds the maximum alignment for the
+machine, that maximum is how much alignment <code>x</code> will get.
+</p>
+<p>The older GNU C syntax for this feature looked like
+<code>__attribute__ ((__aligned__ (<var>alignment</var>)))</code> to the
+declaration, and was added after the variable.  For instance:
+</p>
+<div class="example">
+<pre class="example">char x __attribute__ ((__aligned__ 8));
+</pre></div>
+
+<p>See <a href="Attributes.html">Attributes</a>.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Aliasing.html" accesskey="n" rel="next">Aliasing</a>, Previous: <a href="Directing-Compilation.html" accesskey="p" rel="prev">Directing Compilation</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Type-Conversions.html
===================================================================
--- public/doc/gnu-c/Type-Conversions.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Type-Conversions.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,87 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Type Conversions (GNU C Language Manual)</title>
+
+<meta name="description" content="Type Conversions (GNU C Language Manual)">
+<meta name="keywords" content="Type Conversions (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html" rel="up" title="Top">
+<link href="Explicit-Type-Conversion.html" rel="next" title="Explicit Type Conversion">
+<link href="Compatible-Types.html" rel="prev" title="Compatible Types">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Type-Conversions"></span><div class="header">
+<p>
+Next: <a href="Scope.html" accesskey="n" rel="next">Scope</a>, Previous: <a href="Compatible-Types.html" accesskey="p" rel="prev">Compatible Types</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</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>
+</div>
+<hr>
+<span id="Type-Conversions-1"></span><h2 class="chapter">24 Type Conversions</h2>
+<span id="index-type-conversions"></span>
+<span id="index-conversions_002c-type"></span>
+
+<p>C converts between data types automatically when that seems clearly
+necessary.  In addition, you can convert explicitly with a <em>cast</em>.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Explicit-Type-Conversion.html" accesskey="1">Explicit Type Conversion</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Casting a value from one type to another.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Assignment-Type-Conversions.html" accesskey="2">Assignment Type Conversions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Automatic conversion by assignment operation.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Argument-Promotions.html" accesskey="3">Argument Promotions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Automatic conversion of function parameters.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Operand-Promotions.html" accesskey="4">Operand Promotions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Automatic conversion of arithmetic operands.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Common-Type.html" accesskey="5">Common Type</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">When operand types differ, which one is used?
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Type-Designators.html
===================================================================
--- public/doc/gnu-c/Type-Designators.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Type-Designators.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,124 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Type Designators (GNU C Language Manual)</title>
+
+<meta name="description" content="Type Designators (GNU C Language Manual)">
+<meta name="keywords" content="Type Designators (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Primitive-Types.html" rel="up" title="Primitive Types">
+<link href="Constants.html" rel="next" title="Constants">
+<link href="Other-Data-Types.html" rel="prev" title="Other Data Types">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Type-Designators"></span><div class="header">
+<p>
+Previous: <a href="Other-Data-Types.html" accesskey="p" rel="prev">Other Data Types</a>, Up: <a href="Primitive-Types.html" accesskey="u" rel="up">Primitive Types</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>
+</div>
+<hr>
+<span id="Type-Designators-1"></span><h3 class="section">11.6 Type Designators</h3>
+<span id="index-type-designator"></span>
+
+<p>Some C constructs require a way to designate a specific data type
+independent of any particular variable or expression which has that
+type.  The way to do this is with a <em>type designator</em>.  The
+constucts that need one include casts (see <a href="Explicit-Type-Conversion.html">Explicit Type Conversion</a>) and <code>sizeof</code> (see <a href="Type-Size.html">Type Size</a>).
+</p>
+<p>We also use type designators to talk about the type of a value in C,
+so you will see many type designators in this manual.  When we say,
+&ldquo;The value has type <code>int</code>,&rdquo; <code>int</code> is a type designator.
+</p>
+<p>To make the designator for any type, imagine a variable declaration
+for a variable of that type and delete the variable name and the final
+semicolon.
+</p>
+<p>For example, to designate the type of full-word integers, we start
+with the declaration for a variable <code>foo</code> with that type,
+which is this:
+</p>
+<div class="example">
+<pre class="example">int foo;
+</pre></div>
+
+<p>Then we delete the variable name <code>foo</code> and the semicolon, leaving
+<code>int</code>&mdash;exactly the keyword used in such a declaration.
+Therefore, the type designator for this type is <code>int</code>.
+</p>
+<p>What about long unsigned integers?  From the declaration
+</p>
+<div class="example">
+<pre class="example">unsigned long int foo;
+</pre></div>
+
+<p>we determine that the designator is <code>unsigned long int</code>.
+</p>
+<p>Following this procedure, the designator for any primitive type is
+simply the set of keywords which specifies that type in a declaration.
+The same is true for compound types such as structures, unions, and
+enumerations.
+</p>
+<p>Designators for pointer types do follow the rule of deleting the
+variable name and semicolon, but the result is not so simple.
+See <a href="Pointer-Type-Designators.html">Pointer Type Designators</a>, as part of the chapter about
+pointers.  See <a href="Array-Type-Designators.html">Array Type Designators</a>), for designators for array
+types.
+</p>
+<p>To understand what type a designator stands for, imagine a variable
+name inserted into the right place in the designator to make a valid
+declaration.  What type would that variable be declared as?  That is the
+type the designator designates.
+</p>
+<hr>
+<div class="header">
+<p>
+Previous: <a href="Other-Data-Types.html" accesskey="p" rel="prev">Other Data Types</a>, Up: <a href="Primitive-Types.html" accesskey="u" rel="up">Primitive Types</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Type-Qualifiers.html
===================================================================
--- public/doc/gnu-c/Type-Qualifiers.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Type-Qualifiers.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,93 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Type Qualifiers (GNU C Language Manual)</title>
+
+<meta name="description" content="Type Qualifiers (GNU C Language Manual)">
+<meta name="keywords" content="Type Qualifiers (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html" rel="up" title="Top">
+<link href="const.html" rel="next" title="const">
+<link href="Omitting-Types.html" rel="prev" title="Omitting Types">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Type-Qualifiers"></span><div class="header">
+<p>
+Next: <a href="Functions.html" accesskey="n" rel="next">Functions</a>, Previous: <a href="Variables.html" accesskey="p" rel="prev">Variables</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</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>
+</div>
+<hr>
+<span id="Type-Qualifiers-1"></span><h2 class="chapter">21 Type Qualifiers</h2>
+
+<p>A declaration can include type qualifiers to advise the compiler
+about how the variable will be used.  There are three different
+qualifiers, <code>const</code>, <code>volatile</code> and <code>restrict</code>.  They
+pertain to different issues, so you can use more than one together.
+For instance, <code>const volatile</code> describes a value that the
+program is not allowed to change, but might have a different value
+each time the program examines it.  (This might perhaps be a special
+hardware register, or part of shared memory.)
+</p>
+<p>If you are just learning C, you can skip this chapter.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="const.html" accesskey="1">const</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Variables whose values don&rsquo;t change.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="volatile.html" accesskey="2">volatile</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Variables whose values may be accessed
+                                   or changed outside of the control of
+                                   this program.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="restrict-Pointers.html" accesskey="3">restrict Pointers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Restricted pointers for code optimization.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="restrict-Pointer-Example.html" accesskey="4">restrict Pointer Example</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Example of how that works.
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Type-Size.html
===================================================================
--- public/doc/gnu-c/Type-Size.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Type-Size.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,163 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Type Size (GNU C Language Manual)</title>
+
+<meta name="description" content="Type Size (GNU C Language Manual)">
+<meta name="keywords" content="Type Size (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html" rel="up" title="Top">
+<link href="Pointers.html" rel="next" title="Pointers">
+<link href="Wide-String-Constants.html" rel="prev" title="Wide String Constants">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Type-Size"></span><div class="header">
+<p>
+Next: <a href="Pointers.html" accesskey="n" rel="next">Pointers</a>, Previous: <a href="Constants.html" accesskey="p" rel="prev">Constants</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</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>
+</div>
+<hr>
+<span id="Type-Size-1"></span><h2 class="chapter">13 Type Size</h2>
+<span id="index-type-size"></span>
+<span id="index-size-of-type"></span>
+<span id="index-sizeof"></span>
+
+<p>Each data type has a <em>size</em>, which is the number of bytes
+(see <a href="Storage.html">Storage</a>) that it occupies in memory.  To refer to the size in
+a C program, use <code>sizeof</code>.  There are two ways to use it:
+</p>
+<dl compact="compact">
+<dt><code>sizeof <var>expression</var></code></dt>
+<dd><p>This gives the size of <var>expression</var>, based on its data type.  It
+does not calculate the value of <var>expression</var>, only its size, so if
+<var>expression</var> includes side effects or function calls, they do not
+happen.  Therefore, <code>sizeof</code> is always a compile-time operation
+that has zero run-time cost.
+</p>
+<p>A value that is a bit field (see <a href="Bit-Fields.html">Bit Fields</a>) is not allowed as an
+operand of <code>sizeof</code>.
+</p>
+<p>For example,
+</p>
+<div class="example">
+<pre class="example">double a;
+
+i = sizeof a + 10;
+</pre></div>
+
+<p>sets <code>i</code> to 18 on most computers because <code>a</code> occupies 8 bytes.
+</p>
+<p>Here&rsquo;s how to determine the number of elements in an array
+<code>array</code>:
+</p>
+<div class="example">
+<pre class="example">(sizeof array / sizeof array[0])
+</pre></div>
+
+<p>The expression <code>sizeof array</code> gives the size of the array, not
+the size of a pointer to an element.  However, if <var>expression</var> is
+a function parameter that was declared as an array, that
+variable really has a pointer type (see <a href="Array-Parm-Pointer.html">Array Parm Pointer</a>), so
+the result is the size of that pointer.
+</p>
+</dd>
+<dt><code>sizeof (<var>type</var>)</code></dt>
+<dd><p>This gives the size of <var>type</var>.
+For example,
+</p>
+<div class="example">
+<pre class="example">i = sizeof (double) + 10;
+</pre></div>
+
+<p>is equivalent to the previous example.
+</p>
+<p>You can&rsquo;t apply <code>sizeof</code> to an incomplete type (see <a href="Incomplete-Types.html">Incomplete Types</a>), nor <code>void</code>.  Using it on a function type gives 1 in GNU
+C, which makes adding an integer to a function pointer work as desired
+(see <a href="Pointer-Arithmetic.html">Pointer Arithmetic</a>).
+</p></dd>
+</dl>
+
+<p><strong>Warning</strong>: When you use <code>sizeof</code> with a type
+instead of an expression, you must write parentheses around the type.
+</p>
+<p><strong>Warning</strong>: When applying <code>sizeof</code> to the result of a cast
+(see <a href="Explicit-Type-Conversion.html">Explicit Type Conversion</a>), you must write parentheses around
+the cast expression to avoid an ambiguity in the grammar of C.
+Specifically,
+</p>
+<div class="example">
+<pre class="example">sizeof (int) -x
+</pre></div>
+
+<p>parses as
+</p>
+<div class="example">
+<pre class="example">(sizeof (int)) - x
+</pre></div>
+
+<p>If what you want is
+</p>
+<div class="example">
+<pre class="example">sizeof ((int) -x)
+</pre></div>
+
+<p>you must write it that way, with parentheses.
+</p>
+<p>The data type of the value of the <code>sizeof</code> operator is always one
+of the unsigned integer types; which one of those types depends on the
+machine.  The header file <code>stddef.h</code> defines the typedef name
+<code>size_t</code> as an alias for this type.  See <a href="Defining-Typedef-Names.html">Defining Typedef Names</a>.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Pointers.html" accesskey="n" rel="next">Pointers</a>, Previous: <a href="Constants.html" accesskey="p" rel="prev">Constants</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Type-Tags.html
===================================================================
--- public/doc/gnu-c/Type-Tags.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Type-Tags.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,170 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Type Tags (GNU C Language Manual)</title>
+
+<meta name="description" content="Type Tags (GNU C Language Manual)">
+<meta name="keywords" content="Type Tags (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Structures.html" rel="up" title="Structures">
+<link href="Arrays.html" rel="next" title="Arrays">
+<link href="Intertwined-Incomplete-Types.html" rel="prev" title="Intertwined Incomplete Types">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Type-Tags"></span><div class="header">
+<p>
+Previous: <a href="Intertwined-Incomplete-Types.html" accesskey="p" rel="prev">Intertwined Incomplete Types</a>, Up: <a href="Structures.html" accesskey="u" rel="up">Structures</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>
+</div>
+<hr>
+<span id="Type-Tags-1"></span><h3 class="section">15.20 Type Tags</h3>
+<span id="index-type-tags"></span>
+
+<p>The name that follows <code>struct</code> (see <a href="Structures.html">Structures</a>), <code>union</code>
+(see <a href="Unions.html">Unions</a>, or <code>enum</code> (see <a href="Enumeration-Types.html">Enumeration Types</a>) is called
+a <em>type tag</em>.  In C, a type tag never conflicts with a variable
+name or function name; the type tags have a separate <em>name space</em>.
+Thus, there is no name conflict in this code:
+</p>
+<div class="example">
+<pre class="example">struct pair { int a, b; };
+int pair = 1;
+</pre></div>
+
+<p>nor in this one:
+</p>
+<div class="example">
+<pre class="example">struct pair { int a, b; } pair;
+</pre></div>
+
+<p>where <code>pair</code> is both a structure type tag and a variable name.
+</p>
+<p>However, <code>struct</code>, <code>union</code>, and <code>enum</code> share the same
+name space of tags, so this is a conflict:
+</p>
+<div class="example">
+<pre class="example">struct pair { int a, b; };
+enum pair { c, d };
+</pre></div>
+
+<p>and so is this:
+</p>
+<div class="example">
+<pre class="example">struct pair { int a, b; };
+struct pair { int c, d; };
+</pre></div>
+
+<p>When the code defines a type tag inside a block, the tag&rsquo;s scope is
+limited to that block (as for local variables).  Two definitions for
+one type tag do not conflict if they are in different scopes; rather,
+each is valid in its scope.  For example,
+</p>
+<div class="example">
+<pre class="example">struct pair { int a, b; };
+
+void
+pair_up_doubles (int len, double array[])
+{
+  struct pair { double a, b; };
+  <span class="roman">&hellip;</span>
+}
+</pre></div>
+
+<p>has two definitions for <code>struct pair</code> which do not conflict.  The
+one inside the function applies only within the definition of
+<code>pair_up_doubles</code>.  Within its scope, that definition
+<em>shadows</em> the outer definition.
+</p>
+<p>If <code>struct pair</code> appears inside the function body, before the
+inner definition, it refers to the outer definition&mdash;the only one
+that has been seen at that point.  Thus, in this code,
+</p>
+<div class="example">
+<pre class="example">struct pair { int a, b; };
+
+void
+pair_up_doubles (int len, double array[])
+{
+  struct two_pairs { struct pair *p, *q; };
+  struct pair { double a, b; };
+  <span class="roman">&hellip;</span>
+}
+</pre></div>
+
+<p>the structure <code>two_pairs</code> has pointers to the outer definition of
+<code>struct pair</code>, which is probably not desirable.
+</p>
+<p>To prevent that, you can write <code>struct pair;</code> inside the function
+body as a variable declaration with no variables.  This is a
+<em>forward declaration</em> of the type tag <code>pair</code>: it makes the
+type tag local to the current block, with the details of the type to
+come later.  Here&rsquo;s an example:
+</p>
+<div class="example">
+<pre class="example">void
+pair_up_doubles (int len, double array[])
+{
+  /* <span class="roman">Forward declaration for <code>pair</code>.</span>  */
+  struct pair;
+  struct two_pairs { struct pair *p, *q; };
+  /* <span class="roman">Give the details.</span>  */
+  struct pair { double a, b; };
+  <span class="roman">&hellip;</span>
+}
+</pre></div>
+
+<p>However, the cleanest practice is to avoid shadowing type tags.
+</p>
+<hr>
+<div class="header">
+<p>
+Previous: <a href="Intertwined-Incomplete-Types.html" accesskey="p" rel="prev">Intertwined Incomplete Types</a>, Up: <a href="Structures.html" accesskey="u" rel="up">Structures</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/UTF_002d8-String-Constants.html
===================================================================
--- public/doc/gnu-c/UTF_002d8-String-Constants.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/UTF_002d8-String-Constants.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,87 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>UTF-8 String Constants (GNU C Language Manual)</title>
+
+<meta name="description" content="UTF-8 String Constants (GNU C Language Manual)">
+<meta name="keywords" content="UTF-8 String Constants (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Constants.html" rel="up" title="Constants">
+<link href="Unicode-Character-Codes.html" rel="next" title="Unicode Character Codes">
+<link href="String-Constants.html" rel="prev" title="String Constants">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="UTF_002d8-String-Constants"></span><div class="header">
+<p>
+Next: <a href="Unicode-Character-Codes.html" accesskey="n" rel="next">Unicode Character Codes</a>, Previous: <a href="String-Constants.html" accesskey="p" rel="prev">String Constants</a>, Up: <a href="Constants.html" accesskey="u" rel="up">Constants</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>
+</div>
+<hr>
+<span id="UTF_002d8-String-Constants-1"></span><h3 class="section">12.8 UTF-8 String Constants</h3>
+<span id="index-UTF_002d8-String-Constants"></span>
+
+<p>Writing &lsquo;<samp>u8</samp>&rsquo; immediately before a string constant, with no
+intervening space, means to represent that string in UTF-8 encoding as
+a sequence of bytes.  UTF-8 represents ASCII characters with a single
+byte, and represents non-ASCII Unicode characters (codes 128 and up)
+as multibyte sequences.  Here is an example of a UTF-8 constant:
+</p>
+<div class="example">
+<pre class="example">u8&quot;A cónstàñt&quot;
+</pre></div>
+
+<p>This constant occupies 13 bytes plus the terminating null,
+because each of the accented letters is a two-byte sequence.
+</p>
+<p>Concatenating an ordinary string with a UTF-8 string conceptually
+produces another UTF-8 string.  However, if the ordinary string
+contains character codes 128 and up, the results cannot be relied on.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Undefining-and-Redefining-Macros.html
===================================================================
--- public/doc/gnu-c/Undefining-and-Redefining-Macros.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Undefining-and-Redefining-Macros.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,127 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Undefining and Redefining Macros (GNU C Language Manual)</title>
+
+<meta name="description" content="Undefining and Redefining Macros (GNU C Language Manual)">
+<meta name="keywords" content="Undefining and Redefining Macros (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Macros.html" rel="up" title="Macros">
+<link href="Directives-Within-Macro-Arguments.html" rel="next" title="Directives Within Macro Arguments">
+<link href="Predefined-Macros.html" rel="prev" title="Predefined Macros">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Undefining-and-Redefining-Macros"></span><div class="header">
+<p>
+Next: <a href="Directives-Within-Macro-Arguments.html" accesskey="n" rel="next">Directives Within Macro Arguments</a>, Previous: <a href="Predefined-Macros.html" accesskey="p" rel="prev">Predefined Macros</a>, Up: <a href="Macros.html" accesskey="u" rel="up">Macros</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>
+</div>
+<hr>
+<span id="Undefining-and-Redefining-Macros-1"></span><h4 class="subsection">26.5.8 Undefining and Redefining Macros</h4>
+<span id="index-undefining-macros"></span>
+<span id="index-redefining-macros"></span>
+<span id="index-_0023undef"></span>
+
+<p>You can <em>undefine</em> a macro with the <code>#undef</code> directive.
+<code>#undef</code> takes a single argument, the name of the macro to
+undefine.  You use the bare macro name, even if the macro is
+function-like.  It is an error if anything appears on the line after
+the macro name.  <code>#undef</code> has no effect if the name is not a
+macro.
+</p>
+<div class="example">
+<pre class="example">#define FOO 4
+x = FOO;        &rarr; x = 4;
+#undef FOO
+x = FOO;        &rarr; x = FOO;
+</pre></div>
+
+<p>Once a macro has been undefined, that identifier may be <em>redefined</em>
+as a macro by a subsequent <code>#define</code> directive.  The new definition
+need not have any resemblance to the old definition.
+</p>
+<p>You can define a macro again without first undefining it only if
+the new definition is <em>effectively the same</em> as the old one.
+Two macro definitions are effectively the same if:
+</p>
+<ul>
+<li> Both are the same type of macro (object- or function-like).
+</li><li> All the tokens of the replacement list are the same.
+</li><li> If there are any parameters, they are the same.
+</li><li> Whitespace appears in the same places in both.  It need not be
+exactly the same amount of whitespace, though.  Remember that comments
+count as whitespace.
+</li></ul>
+
+<p>These definitions are effectively the same:
+</p><div class="example">
+<pre class="example">#define FOUR (2 + 2)
+#define FOUR         (2    +    2)
+#define FOUR (2 /* <span class="roman">two</span> */ + 2)
+</pre></div>
+<p>but these are not:
+</p><div class="example">
+<pre class="example">#define FOUR (2 + 2)
+#define FOUR ( 2+2 )
+#define FOUR (2 * 2)
+#define FOUR(score,and,seven,years,ago) (2 + 2)
+</pre></div>
+
+<p>This allows two different header files to define a common macro.
+</p>
+<p>You can redefine an existing macro with #define, but redefining an
+existing macro name with a different definition results in a warning.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Directives-Within-Macro-Arguments.html" accesskey="n" rel="next">Directives Within Macro Arguments</a>, Previous: <a href="Predefined-Macros.html" accesskey="p" rel="prev">Predefined Macros</a>, Up: <a href="Macros.html" accesskey="u" rel="up">Macros</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Unicode-Character-Codes.html
===================================================================
--- public/doc/gnu-c/Unicode-Character-Codes.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Unicode-Character-Codes.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,111 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Unicode Character Codes (GNU C Language Manual)</title>
+
+<meta name="description" content="Unicode Character Codes (GNU C Language Manual)">
+<meta name="keywords" content="Unicode Character Codes (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Constants.html" rel="up" title="Constants">
+<link href="Wide-Character-Constants.html" rel="next" title="Wide Character Constants">
+<link href="UTF_002d8-String-Constants.html" rel="prev" title="UTF-8 String Constants">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Unicode-Character-Codes"></span><div class="header">
+<p>
+Next: <a href="Wide-Character-Constants.html" accesskey="n" rel="next">Wide Character Constants</a>, Previous: <a href="UTF_002d8-String-Constants.html" accesskey="p" rel="prev">UTF-8 String Constants</a>, Up: <a href="Constants.html" accesskey="u" rel="up">Constants</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>
+</div>
+<hr>
+<span id="Unicode-Character-Codes-1"></span><h3 class="section">12.9 Unicode Character Codes</h3>
+<span id="index-Unicode-character-codes"></span>
+<span id="index-universal-character-names"></span>
+
+<p>You can specify Unicode characters, for individual character constants
+or as part of string constants (see <a href="String-Constants.html">String Constants</a>), using
+escape sequences.  Use the &lsquo;<samp>\u</samp>&rsquo; escape sequence with a 16-bit
+hexadecimal Unicode character code.  If the code value is too big for
+16 bits, use the &lsquo;<samp>\U</samp>&rsquo; escape sequence with a 32-bit hexadecimal
+Unicode character code.  (These codes are called <em>universal
+character names</em>.)  For example,
+</p>
+<div class="example">
+<pre class="example">\u6C34      /* <span class="roman">16-bit code (UTF-16)</span> */
+\U0010ABCD  /* <span class="roman">32-bit code (UTF-32)</span> */
+</pre></div>
+
+<p>One way to use these is in UTF-8 string constants (see <a href="UTF_002d8-String-Constants.html">UTF-8 String Constants</a>).  For instance,
+</p>
+<div class="example">
+<pre class="example">u8&quot;fóó \u6C34 \U0010ABCD&quot;
+</pre></div>
+
+<p>You can also use them in wide character constants (see <a href="Wide-Character-Constants.html">Wide Character Constants</a>), like this:
+</p>
+<div class="example">
+<pre class="example">u'\u6C34'      /* <span class="roman">16-bit code</span> */
+U'\U0010ABCD'  /* <span class="roman">32-bit code</span> */
+</pre></div>
+
+<p>and in wide string constants (see <a href="Wide-String-Constants.html">Wide String Constants</a>), like
+this:
+</p>
+<div class="example">
+<pre class="example">u&quot;\u6C34\u6C33&quot;  /* <span class="roman">16-bit code</span> */
+U&quot;\U0010ABCD&quot;    /* <span class="roman">32-bit code</span> */
+</pre></div>
+
+<p>Codes in the range of <code>D800</code> through <code>DFFF</code> are not valid
+in Unicode.  Codes less than <code>00A0</code> are also forbidden, except for
+<code>0024</code>, <code>0040</code>, and <code>0060</code>; these characters are
+actually ASCII control characters, and you can specify them with other
+escape sequences (see <a href="Character-Constants.html">Character Constants</a>).
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Unions.html
===================================================================
--- public/doc/gnu-c/Unions.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Unions.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,143 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Unions (GNU C Language Manual)</title>
+
+<meta name="description" content="Unions (GNU C Language Manual)">
+<meta name="keywords" content="Unions (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Structures.html" rel="up" title="Structures">
+<link href="Packing-With-Unions.html" rel="next" title="Packing With Unions">
+<link href="Structure-Assignment.html" rel="prev" title="Structure Assignment">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Unions"></span><div class="header">
+<p>
+Next: <a href="Packing-With-Unions.html" accesskey="n" rel="next">Packing With Unions</a>, Previous: <a href="Structure-Assignment.html" accesskey="p" rel="prev">Structure Assignment</a>, Up: <a href="Structures.html" accesskey="u" rel="up">Structures</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>
+</div>
+<hr>
+<span id="Unions-1"></span><h3 class="section">15.13 Unions</h3>
+<span id="index-unions"></span>
+<span id="index-union"></span>
+
+<p>A <em>union type</em> defines alternative ways of looking at the same
+piece of memory.  Each alternative view is defined with a data type,
+and identified by a name.  A union definition looks like this:
+</p>
+<div class="example">
+<pre class="example">union <var>name</var>
+{
+  <var>alternative declarations</var><span class="roman">&hellip;</span>
+};
+</pre></div>
+
+<p>Each alternative declaration looks like a structure field declaration,
+except that it can&rsquo;t be a bit field.  For instance,
+</p>
+<div class="example">
+<pre class="example">union number
+{
+  long int integer;
+  double float;
+}
+</pre></div>
+
+<p>lets you store either an integer (type <code>long int</code>) or a floating
+point number (type <code>double</code>) in the same place in memory.  The
+length and alignment of the union type are the maximum of all the
+alternatives&mdash;they do not have to be the same.  In this union
+example, <code>double</code> probably takes more space than <code>long int</code>,
+but that doesn&rsquo;t cause a problem in programs that use the union in the
+normal way.
+</p>
+<p>The members don&rsquo;t have to be different in data type.  Sometimes
+each member pertains to a way the data will be used.  For instance,
+</p>
+<div class="example">
+<pre class="example">union datum
+{
+  double latitude;
+  double longitude;
+  double height;
+  double weight;
+  int continent;
+}
+</pre></div>
+
+<p>This union holds one of several kinds of data; most kinds are floating
+points, but the value can also be a code for a continent which is an
+integer.  You <em>could</em> use one member of type <code>double</code> to
+access all the values which have that type, but the different member
+names will make the program clearer.
+</p>
+<p>The alignment of a union type is the maximum of the alignments of the
+alternatives.  The size of the union type is the maximum of the sizes
+of the alternatives, rounded up to a multiple of the alignment
+(because every type&rsquo;s size must be a multiple of its alignment).
+</p>
+<p>All the union alternatives start at the address of the union itself.
+If an alternative is shorter than the union as a whole, it occupies
+the first part of the union&rsquo;s storage, leaving the last part unused
+<em>for that alternative</em>.
+</p>
+<p><strong>Warning:</strong> if the code stores data using one union alternative
+and accesses it with another, the results depend on the kind of
+computer in use.  Only wizards should try to do this.  However, when
+you need to do this, a union is a clean way to do it.
+</p>
+<p>Assignment works on any union type by copying the entire value.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Packing-With-Unions.html" accesskey="n" rel="next">Packing With Unions</a>, Previous: <a href="Structure-Assignment.html" accesskey="p" rel="prev">Structure Assignment</a>, Up: <a href="Structures.html" accesskey="u" rel="up">Structures</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Unnamed-Types-as-Fields.html
===================================================================
--- public/doc/gnu-c/Unnamed-Types-as-Fields.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Unnamed-Types-as-Fields.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,117 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Unnamed Types as Fields (GNU C Language Manual)</title>
+
+<meta name="description" content="Unnamed Types as Fields (GNU C Language Manual)">
+<meta name="keywords" content="Unnamed Types as Fields (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Structures.html" rel="up" title="Structures">
+<link href="Incomplete-Types.html" rel="next" title="Incomplete Types">
+<link href="Structure-Constructors.html" rel="prev" title="Structure Constructors">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Unnamed-Types-as-Fields"></span><div class="header">
+<p>
+Next: <a href="Incomplete-Types.html" accesskey="n" rel="next">Incomplete Types</a>, Previous: <a href="Structure-Constructors.html" accesskey="p" rel="prev">Structure Constructors</a>, Up: <a href="Structures.html" accesskey="u" rel="up">Structures</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>
+</div>
+<hr>
+<span id="Unnamed-Types-as-Fields-1"></span><h3 class="section">15.17 Unnamed Types as Fields</h3>
+<span id="index-unnamed-structures"></span>
+<span id="index-unnamed-unions"></span>
+<span id="index-structures_002c-unnamed"></span>
+<span id="index-unions_002c-unnamed"></span>
+
+<p>A structure or a union can contain, as fields,
+unnamed structures and unions.  Here&rsquo;s an example:
+</p>
+<div class="example">
+<pre class="example">struct
+{
+  int a;
+  union
+  {
+    int b;
+    float c;
+  };
+  int d;
+} foo;
+</pre></div>
+
+<p>You can access the fields of the unnamed union within <code>foo</code> as if they
+were individual fields at the same level as the union definition:
+</p>
+<div class="example">
+<pre class="example">foo.a = 42;
+foo.b = 47;
+foo.c = 5.25; // <span class="roman">Overwrites the value in <code>foo.b</code></span>.
+foo.d = 314;
+</pre></div>
+
+<p>Avoid using field names that could cause ambiguity.  For example, with
+this definition:
+</p>
+<div class="example">
+<pre class="example">struct
+{
+  int a;
+  struct
+  {
+    int a;
+    float b;
+  };
+} foo;
+</pre></div>
+
+<p>it is impossible to tell what <code>foo.a</code> refers to.  GNU C reports
+an error when a definition is ambiguous in this way.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Unsigned-Overflow.html
===================================================================
--- public/doc/gnu-c/Unsigned-Overflow.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Unsigned-Overflow.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,103 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Unsigned Overflow (GNU C Language Manual)</title>
+
+<meta name="description" content="Unsigned Overflow (GNU C Language Manual)">
+<meta name="keywords" content="Unsigned Overflow (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Integer-Overflow.html" rel="up" title="Integer Overflow">
+<link href="Signed-Overflow.html" rel="next" title="Signed Overflow">
+<link href="Integer-Overflow.html" rel="prev" title="Integer Overflow">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Unsigned-Overflow"></span><div class="header">
+<p>
+Next: <a href="Signed-Overflow.html" accesskey="n" rel="next">Signed Overflow</a>, Up: <a href="Integer-Overflow.html" accesskey="u" rel="up">Integer Overflow</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>
+</div>
+<hr>
+<span id="Overflow-with-Unsigned-Integers"></span><h4 class="subsection">6.3.1 Overflow with Unsigned Integers</h4>
+
+<p>Unsigned arithmetic in C ignores overflow; it produces the true result
+modulo the <var>n</var>th power of 2, where <var>n</var> is the number of bits
+in the data type.  We say it &ldquo;truncates&rdquo; the true result to the
+lowest <var>n</var> bits.
+</p>
+<p>A true result that is negative, when taken modulo the <var>n</var>th power
+of 2, yields a positive number.  For instance,
+</p>
+<div class="example">
+<pre class="example">unsigned int x = 1;
+unsigned int y;
+
+y = -x;
+</pre></div>
+
+<p>causes overflow because the negative number -1 can&rsquo;t be stored
+in an unsigned type.  The actual result, which is -1 modulo the
+<var>n</var>th power of 2, is one less than the <var>n</var>th power of 2.  That
+is the largest value that the unsigned data type can store.  For a
+32-bit <code>unsigned int</code>, the value is 4,294,967,295.  See <a href="Maximum-and-Minimum-Values.html">Maximum and Minimum Values</a>.
+</p>
+<p>Adding that number to itself, as here,
+</p>
+<div class="example">
+<pre class="example">unsigned int z;
+
+z = y + y;
+</pre></div>
+
+<p>ought to yield 8,489,934,590; however, that is again too large to fit,
+so overflow truncates the value to 4,294,967,294.  If that were a
+signed integer, it would mean -2, which (not by coincidence)
+equals -1 + -1.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Uses-of-Comma.html
===================================================================
--- public/doc/gnu-c/Uses-of-Comma.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Uses-of-Comma.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,92 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Uses of Comma (GNU C Language Manual)</title>
+
+<meta name="description" content="Uses of Comma (GNU C Language Manual)">
+<meta name="keywords" content="Uses of Comma (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Comma-Operator.html" rel="up" title="Comma Operator">
+<link href="Clean-Comma.html" rel="next" title="Clean Comma">
+<link href="Comma-Operator.html" rel="prev" title="Comma Operator">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Uses-of-Comma"></span><div class="header">
+<p>
+Next: <a href="Clean-Comma.html" accesskey="n" rel="next">Clean Comma</a>, Up: <a href="Comma-Operator.html" accesskey="u" rel="up">Comma Operator</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>
+</div>
+<hr>
+<span id="The-Uses-of-the-Comma-Operator"></span><h4 class="subsection">8.5.1 The Uses of the Comma Operator</h4>
+
+<p>With commas, you can put several expressions into a place that
+requires just one expression&mdash;for example, in the header of a
+<code>for</code> statement.  This statement
+</p>
+<div class="example">
+<pre class="example">for (i = 0, j = 10, k = 20; i &lt; n; i++)
+</pre></div>
+
+<p>contains three assignment expressions, to initialize <code>i</code>, <code>j</code>
+and <code>k</code>.  The syntax of <code>for</code> requires just one expression
+for initialization; to include three assignments, we use commas to
+bundle them into a single larger expression, <code>i = 0, j = 10, k =
+20</code>.  This technique is also useful in the loop-advance expression,
+the last of the three inside the <code>for</code> parentheses.
+</p>
+<p>In the <code>for</code> statement and the <code>while</code> statement
+(see <a href="Loop-Statements.html">Loop Statements</a>), a comma provides a way to perform some side
+effect before the loop-exit test.  For example,
+</p>
+<div class="example">
+<pre class="example">while (printf (&quot;At the test, x = %d\n&quot;, x), x != 0)
+</pre></div>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Values-from-main.html
===================================================================
--- public/doc/gnu-c/Values-from-main.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Values-from-main.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,106 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Values from main (GNU C Language Manual)</title>
+
+<meta name="description" content="Values from main (GNU C Language Manual)">
+<meta name="keywords" content="Values from main (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="The-main-Function.html" rel="up" title="The main Function">
+<link href="Command_002dline-Parameters.html" rel="next" title="Command-line Parameters">
+<link href="The-main-Function.html" rel="prev" title="The main Function">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Values-from-main"></span><div class="header">
+<p>
+Next: <a href="Command_002dline-Parameters.html" accesskey="n" rel="next">Command-line Parameters</a>, Up: <a href="The-main-Function.html" accesskey="u" rel="up">The main Function</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>
+</div>
+<hr>
+<span id="Returning-Values-from-main"></span><h4 class="subsection">22.6.1 Returning Values from <code>main</code></h4>
+<span id="index-returning-values-from-main"></span>
+<span id="index-success"></span>
+<span id="index-failure"></span>
+<span id="index-exit-status"></span>
+
+<p>When <code>main</code> returns, the process terminates.  Whatever value
+<code>main</code> returns becomes the exit status which is reported to the
+parent process.  While nominally the return value is of type
+<code>int</code>, in fact the exit status gets truncated to eight bits; if
+<code>main</code> returns the value 256, the exit status is 0.
+</p>
+<p>Normally, programs return only one of two values: 0 for success,
+and 1 for failure. For maximum portability, use the macro
+values <code>EXIT_SUCCESS</code> and <code>EXIT_FAILURE</code> defined in
+<code>stdlib.h</code>.  Here&rsquo;s an example:
+</p>
+<span id="index-EXIT_005fFAILURE"></span>
+<span id="index-EXIT_005fSUCCESS"></span>
+<div class="example">
+<pre class="example">#include &lt;stdlib.h&gt;  /* <span class="roman">Defines <code>EXIT_SUCCESS</code></span> */
+                     /* <span class="roman">and <code>EXIT_FAILURE</code>.</span> */
+
+int
+main (void)
+{
+  <span class="roman">&hellip;</span>
+  if (foo)
+    return EXIT_SUCCESS;
+  else
+    return EXIT_FAILURE;
+}
+</pre></div>
+
+<p>Some types of programs maintain special conventions for various return
+values; for example, comparison programs including <code>cmp</code> and
+<code>diff</code> return 1 to indicate a mismatch, and 2 to indicate that
+the comparison couldn&rsquo;t be performed.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Variable-Declarations.html
===================================================================
--- public/doc/gnu-c/Variable-Declarations.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Variable-Declarations.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,119 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Variable Declarations (GNU C Language Manual)</title>
+
+<meta name="description" content="Variable Declarations (GNU C Language Manual)">
+<meta name="keywords" content="Variable Declarations (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Variables.html" rel="up" title="Variables">
+<link href="Declaring-Arrays-and-Pointers.html" rel="next" title="Declaring Arrays and Pointers">
+<link href="Variables.html" rel="prev" title="Variables">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Variable-Declarations"></span><div class="header">
+<p>
+Next: <a href="Initializers.html" accesskey="n" rel="next">Initializers</a>, Up: <a href="Variables.html" accesskey="u" rel="up">Variables</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>
+</div>
+<hr>
+<span id="Variable-Declarations-1"></span><h3 class="section">20.1 Variable Declarations</h3>
+<span id="index-variable-declarations"></span>
+<span id="index-declaration-of-variables"></span>
+
+<p>Here&rsquo;s what a variable declaration looks like:
+</p>
+<div class="example">
+<pre class="example"><var>keywords</var> <var>basetype</var> <var>decorated-variable</var> <span class="roman">[</span>= <var>init</var><span class="roman">]</span>;
+</pre></div>
+
+<p>The <var>keywords</var> specify how to handle the scope of the variable
+name and the allocation of its storage.  Most declarations have
+no keywords because the defaults are right for them.
+</p>
+<p>C allows these keywords to come before or after <var>basetype</var>, or
+even in the middle of it as in <code>unsigned static int</code>, but don&rsquo;t
+do that&mdash;it would surprise other programmers.  Always write the
+keywords first.
+</p>
+<p>The <var>basetype</var> can be any of the predefined types of C, or a type
+keyword defined with <code>typedef</code>.  It can also be <code>struct
+<var>tag</var></code>, <code>union <var>tag</var></code>, or <code>enum <var>tag</var></code>.  In
+addition, it can include type qualifiers such as <code>const</code> and
+<code>volatile</code> (see <a href="Type-Qualifiers.html">Type Qualifiers</a>).
+</p>
+<p>In the simplest case, <var>decorated-variable</var> is just the variable
+name.  That declares the variable with the type specified by
+<var>basetype</var>.  For instance,
+</p>
+<div class="example">
+<pre class="example">int foo;
+</pre></div>
+
+<p>uses <code>int</code> as the <var>basetype</var> and <code>foo</code> as the
+<var>decorated-variable</var>.  It declares <code>foo</code> with type
+<code>int</code>.
+</p>
+<div class="example">
+<pre class="example">struct tree_node foo;
+</pre></div>
+
+<p>declares <code>foo</code> with type <code>struct tree_node</code>.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Declaring-Arrays-and-Pointers.html" accesskey="1">Declaring Arrays and Pointers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Declaration syntax for variables of
+                                      array and pointer types.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Combining-Variable-Declarations.html" accesskey="2">Combining Variable Declarations</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">More than one variable declaration
+                                      in a single statement.
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Variable-Number-of-Arguments.html
===================================================================
--- public/doc/gnu-c/Variable-Number-of-Arguments.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Variable-Number-of-Arguments.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,199 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Variable Number of Arguments (GNU C Language Manual)</title>
+
+<meta name="description" content="Variable Number of Arguments (GNU C Language Manual)">
+<meta name="keywords" content="Variable Number of Arguments (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Advanced-Definitions.html" rel="up" title="Advanced Definitions">
+<link href="Nested-Functions.html" rel="next" title="Nested Functions">
+<link href="Variable_002dLength-Array-Parameters.html" rel="prev" title="Variable-Length Array Parameters">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Variable-Number-of-Arguments"></span><div class="header">
+<p>
+Next: <a href="Nested-Functions.html" accesskey="n" rel="next">Nested Functions</a>, Previous: <a href="Variable_002dLength-Array-Parameters.html" accesskey="p" rel="prev">Variable-Length Array Parameters</a>, Up: <a href="Advanced-Definitions.html" accesskey="u" rel="up">Advanced Definitions</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>
+</div>
+<hr>
+<span id="Variable_002dLength-Parameter-Lists"></span><h4 class="subsection">22.7.2 Variable-Length Parameter Lists</h4>
+<span id="index-variable_002dlength-parameter-lists"></span>
+<span id="index-parameters-lists_002c-variable-length"></span>
+<span id="index-function-parameter-lists_002c-variable-length"></span>
+
+<span id="index-variadic-function"></span>
+<p>A function that takes a variable number of arguments is called a
+<em>variadic function</em>.  In C, a variadic function must specify at
+least one fixed argument with an explicitly declared data type.
+Additional arguments can follow, and can vary in both quantity and
+data type.
+</p>
+<p>In the function header, declare the fixed parameters in the normal
+way, then write a comma and an ellipsis: &lsquo;<samp>, ...</samp>&rsquo;.  Here is an
+example of a variadic function header:
+</p>
+<div class="example">
+<pre class="example">int add_multiple_values (int number, ...)
+</pre></div>
+
+<span id="index-va_005flist"></span>
+<span id="index-va_005fstart"></span>
+<span id="index-va_005fend"></span>
+<p>The function body can refer to fixed arguments by their parameter
+names, but the additional arguments have no names.  Accessing them in
+the function body uses certain standard macros.  They are defined in
+the library header file <samp>stdarg.h</samp>, so the code must
+<code>#include</code> that file.
+</p>
+<p>In the body, write
+</p>
+<div class="example">
+<pre class="example">va_list ap;
+va_start (ap, <var>last_fixed_parameter</var>);
+</pre></div>
+
+<p>This declares the variable <code>ap</code> (you can use any name for it)
+and then sets it up to point before the first additional argument.
+</p>
+<p>Then, to fetch the next consecutive additional argument, write this:
+</p>
+<div class="example">
+<pre class="example">va_arg (ap, <var>type</var>)
+</pre></div>
+
+<p>After fetching all the additional arguments (or as many as need to be
+used), write this:
+</p>
+<div class="example">
+<pre class="example">va_end (ap);
+</pre></div>
+
+<p>Here&rsquo;s an example of a variadic function definition that adds any
+number of <code>int</code> arguments.  The first (fixed) argument says how
+many more arguments follow.
+</p>
+<div class="example">
+<pre class="example">#include &lt;stdarg.h&gt; /* <span class="roman">Defines <code>va</code><span class="roman">&hellip;</span> macros.</span> */
+<span class="roman">&hellip;</span>
+
+int
+add_multiple_values (int argcount, ...)
+{
+  int counter, total = 0;
+
+  /* <span class="roman">Declare a variable of type <code>va_list</code>.</span> */
+  va_list argptr;
+
+  /* <span class="roman">Initialize that variable..</span> */
+  va_start (argptr, argcount);
+
+  for (counter = 0; counter &lt; argcount; counter++)
+    {
+      /* <span class="roman">Get the next additional argument.</span> */
+      total += va_arg (argptr, int);
+    }
+
+  /* <span class="roman">End use of the <code>argptr</code> variable.</span> */
+  va_end (argptr);
+
+  return total;
+}
+</pre></div>
+
+<p>With GNU C, <code>va_end</code> is superfluous, but some other compilers
+might make <code>va_start</code> allocate memory so that calling
+<code>va_end</code> is necessary to avoid a memory leak.  Before doing
+<code>va_start</code> again with the same variable, do <code>va_end</code>
+first.
+</p>
+<span id="index-va_005fcopy"></span>
+<p>Because of this possible memory allocation, it is risky (in principle)
+to copy one <code>va_list</code> variable to another with assignment.
+Instead, use <code>va_copy</code>, which copies the substance but allocates
+separate memory in the variable you copy to.  The call looks like
+<code>va_copy (<var>to</var>, <var>from</var>)</code>, where both <var>to</var> and
+<var>from</var> should be variables of type <code>va_list</code>.  In principle,
+do <code>va_end</code> on each of these variables before its scope ends.
+</p>
+<p>Since the additional arguments&rsquo; types are not specified in the
+function&rsquo;s definition, the default argument promotions
+(see <a href="Argument-Promotions.html">Argument Promotions</a>) apply to them in function calls.  The
+function definition must take account of this; thus, if an argument
+was passed as <code>short</code>, the function should get it as <code>int</code>.
+If an argument was passed as <code>float</code>, the function should get it
+as <code>double</code>.
+</p>
+<p>C has no mechanism to tell the variadic function how many arguments
+were passed to it, so its calling convention must give it a way to
+determine this.  That&rsquo;s why <code>add_multiple_values</code> takes a fixed
+argument that says how many more arguments follow.  Thus, you can
+call the function like this:
+</p>
+<div class="example">
+<pre class="example">sum = add_multiple_values (3, 12, 34, 190);
+/* <span class="roman">Value is 12+34+190.</span> */
+</pre></div>
+
+<p>In GNU C, there is no actual need to use the <code>va_end</code> function.
+In fact, it does nothing.  It&rsquo;s used for compatibility with other
+compilers, when that matters.
+</p>
+<p>It is a mistake to access variables declared as <code>va_list</code> except
+in the specific ways described here.  Just what that type consists of
+is an implementation detail, which could vary from one platform to
+another.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Nested-Functions.html" accesskey="n" rel="next">Nested Functions</a>, Previous: <a href="Variable_002dLength-Array-Parameters.html" accesskey="p" rel="prev">Variable-Length Array Parameters</a>, Up: <a href="Advanced-Definitions.html" accesskey="u" rel="up">Advanced Definitions</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Variable_002dLength-Array-Parameters.html
===================================================================
--- public/doc/gnu-c/Variable_002dLength-Array-Parameters.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Variable_002dLength-Array-Parameters.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,150 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Variable-Length Array Parameters (GNU C Language Manual)</title>
+
+<meta name="description" content="Variable-Length Array Parameters (GNU C Language Manual)">
+<meta name="keywords" content="Variable-Length Array Parameters (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Advanced-Definitions.html" rel="up" title="Advanced Definitions">
+<link href="Variable-Number-of-Arguments.html" rel="next" title="Variable Number of Arguments">
+<link href="Advanced-Definitions.html" rel="prev" title="Advanced Definitions">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Variable_002dLength-Array-Parameters"></span><div class="header">
+<p>
+Next: <a href="Variable-Number-of-Arguments.html" accesskey="n" rel="next">Variable Number of Arguments</a>, Up: <a href="Advanced-Definitions.html" accesskey="u" rel="up">Advanced Definitions</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>
+</div>
+<hr>
+<span id="Variable_002dLength-Array-Parameters-1"></span><h4 class="subsection">22.7.1 Variable-Length Array Parameters</h4>
+<span id="index-variable_002dlength-array-parameters"></span>
+<span id="index-array-parameters_002c-variable_002dlength"></span>
+<span id="index-functions-that-accept-variable_002dlength-arrays"></span>
+
+<p>An array parameter can have variable length: simply declare the array
+type with a size that isn&rsquo;t constant.  In a nested function, the
+length can refer to a variable defined in a containing scope.  In any
+function, it can refer to a previous parameter, like this:
+</p>
+<div class="example">
+<pre class="example">struct entry
+tester (int len, char data[len][len])
+{
+  <span class="roman">&hellip;</span>
+}
+</pre></div>
+
+<p>Alternatively, in function declarations (but not in function
+definitions), you can use <code>[*]</code> to denote that the array
+parameter is of a variable length, such that these two declarations
+mean the same thing:
+</p>
+<div class="example">
+<pre class="example">struct entry
+tester (int len, char data[len][len]);
+</pre></div>
+
+<div class="example">
+<pre class="example">struct entry
+tester (int len, char data[*][*]);
+</pre></div>
+
+<p>The two forms of input are equivalent in GNU C, but emphasizing that
+the array parameter is variable-length may be helpful to those
+studying the code.
+</p>
+<p>You can also omit the length parameter, and instead use some other
+in-scope variable for the length in the function definition:
+</p>
+<div class="example">
+<pre class="example">struct entry
+tester (char data[*][*]);
+<span class="roman">&hellip;</span>
+int dataLength = 20;
+<span class="roman">&hellip;</span>
+struct entry
+tester (char data[dataLength][dataLength])
+{
+  <span class="roman">&hellip;</span>
+}
+</pre></div>
+
+
+<span id="index-parameter-forward-declaration"></span>
+<p>In GNU C, to pass the array first and the length afterward, you can
+use a <em>parameter forward declaration</em>, like this:
+</p>
+<div class="example">
+<pre class="example">struct entry
+tester (int len; char data[len][len], int len)
+{
+  <span class="roman">&hellip;</span>
+}
+</pre></div>
+
+<p>The &lsquo;<samp>int len</samp>&rsquo; before the semicolon is the parameter forward
+declaration; it serves the purpose of making the name <code>len</code> known
+when the declaration of <code>data</code> is parsed.
+</p>
+<p>You can write any number of such parameter forward declarations in the
+parameter list.  They can be separated by commas or semicolons, but
+the last one must end with a semicolon, which is followed by the
+&ldquo;real&rdquo; parameter declarations.  Each forward declaration must match
+a subsequent &ldquo;real&rdquo; declaration in parameter name and data type.
+</p>
+<p>Standard C does not support parameter forward declarations.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Variable-Number-of-Arguments.html" accesskey="n" rel="next">Variable Number of Arguments</a>, Up: <a href="Advanced-Definitions.html" accesskey="u" rel="up">Advanced Definitions</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Variables.html
===================================================================
--- public/doc/gnu-c/Variables.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Variables.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,126 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Variables (GNU C Language Manual)</title>
+
+<meta name="description" content="Variables (GNU C Language Manual)">
+<meta name="keywords" content="Variables (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html" rel="up" title="Top">
+<link href="Variable-Declarations.html" rel="next" title="Variable Declarations">
+<link href="Statement-Exprs.html" rel="prev" title="Statement Exprs">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Variables"></span><div class="header">
+<p>
+Next: <a href="Type-Qualifiers.html" accesskey="n" rel="next">Type Qualifiers</a>, Previous: <a href="Statements.html" accesskey="p" rel="prev">Statements</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</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>
+</div>
+<hr>
+<span id="Variables-1"></span><h2 class="chapter">20 Variables</h2>
+<span id="index-variables"></span>
+
+<p>Every variable used in a C program needs to be made known by a
+<em>declaration</em>.  It can be used only after it has been declared.
+It is an error to declare a variable name more than once in the same
+scope; an exception is that <code>extern</code> declarations and tentative
+definitions can coexist with another declaration of the same
+variable.
+</p>
+<p>Variables can be declared anywhere within a block or file. (Older
+versions of C required that all variable declarations within a block
+occur before any statements.)
+</p>
+<p>Variables declared within a function or block are <em>local</em> to
+it.  This means that the variable name is visible only until the end
+of that function or block, and the memory space is allocated only
+while control is within it.
+</p>
+<p>Variables declared at the top level in a file are called <em>file-scope</em>.
+They are assigned fixed, distinct memory locations, so they retain
+their values for the whole execution of the program.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Variable-Declarations.html" accesskey="1">Variable Declarations</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Name a variable and and reserve space for it.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Initializers.html" accesskey="2">Initializers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Assigning inital values to variables.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Designated-Inits.html" accesskey="3">Designated Inits</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Assigning initial values to array elements
+                                   at particular array indices.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Auto-Type.html" accesskey="4">Auto Type</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Obtaining the type of a variable.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Local-Variables.html" accesskey="5">Local Variables</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Variables declared in function definitions.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="File_002dScope-Variables.html" accesskey="6">File-Scope Variables</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Variables declared outside of
+                                   function definitions.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Static-Local-Variables.html" accesskey="7">Static Local Variables</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Variables declared within functions,
+                                   but with permanent storage allocation.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Extern-Declarations.html" accesskey="8">Extern Declarations</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Declaring a variable
+                                   which is allocated somewhere else.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Allocating-File_002dScope.html" accesskey="9">Allocating File-Scope</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">When is space allocated
+                                   for file-scope variables?
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="auto-and-register.html">auto and register</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Historically used storage directions.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Omitting-Types.html">Omitting Types</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The bad practice of declaring variables
+                                   with implicit type.
+</td></tr>
+</table>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Type-Qualifiers.html" accesskey="n" rel="next">Type Qualifiers</a>, Previous: <a href="Statements.html" accesskey="p" rel="prev">Statements</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Variadic-Macros.html
===================================================================
--- public/doc/gnu-c/Variadic-Macros.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Variadic-Macros.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,189 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Variadic Macros (GNU C Language Manual)</title>
+
+<meta name="description" content="Variadic Macros (GNU C Language Manual)">
+<meta name="keywords" content="Variadic Macros (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Macros.html" rel="up" title="Macros">
+<link href="Predefined-Macros.html" rel="next" title="Predefined Macros">
+<link href="Concatenation.html" rel="prev" title="Concatenation">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Variadic-Macros"></span><div class="header">
+<p>
+Next: <a href="Predefined-Macros.html" accesskey="n" rel="next">Predefined Macros</a>, Previous: <a href="Concatenation.html" accesskey="p" rel="prev">Concatenation</a>, Up: <a href="Macros.html" accesskey="u" rel="up">Macros</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>
+</div>
+<hr>
+<span id="Variadic-Macros-1"></span><h4 class="subsection">26.5.6 Variadic Macros</h4>
+<span id="index-variable-number-of-arguments"></span>
+<span id="index-macros-with-variable-arguments"></span>
+<span id="index-variadic-macros"></span>
+
+<p>A macro can be declared to accept a variable number of arguments much as
+a function can.  The syntax for defining the macro is similar to that of
+a function.  Here is an example:
+</p>
+<div class="example">
+<pre class="example">#define eprintf(&hellip;) fprintf (stderr, __VA_ARGS__)
+</pre></div>
+
+<p>This kind of macro is called <em>variadic</em>.  When the macro is invoked,
+all the tokens in its argument list after the last named argument (this
+macro has none), including any commas, become the <em>variable
+argument</em>.  This sequence of tokens replaces the identifier
+<code><span class="nolinebreak">__VA_ARGS__</span><!-- /@w --></code> in the macro body wherever it appears.  Thus, we
+have this expansion:
+</p>
+<div class="example">
+<pre class="example">eprintf (&quot;%s:%d: &quot;, input_file, lineno)
+     &rarr;  fprintf (stderr, &quot;%s:%d: &quot;, input_file, lineno)
+</pre></div>
+
+<p>The variable argument is completely macro-expanded before it is inserted
+into the macro expansion, just like an ordinary argument.  You may use
+the <code>#</code> and <code>##</code> operators to stringify the variable argument
+or to paste its leading or trailing token with another token.  (But see
+below for an important special case for <code>##</code>.)
+</p>
+<p><strong>Warning:</strong> don&rsquo;t use the identifier <code><span class="nolinebreak">__VA_ARGS__</span><!-- /@w --></code>
+for anything other than this.
+</p>
+<p>If your macro is complicated, you may want a more descriptive name for
+the variable argument than <code><span class="nolinebreak">__VA_ARGS__</span><!-- /@w --></code>.  You can write an
+argument name immediately before the &lsquo;<samp>&hellip;</samp>&rsquo;; that name is used
+for the variable argument.<a id="DOCF9" href="#FOOT9"><sup>9</sup></a>  The
+<code>eprintf</code> macro above could be written thus:
+</p>
+<div class="example">
+<pre class="example">#define eprintf(args&hellip;) fprintf (stderr, args)
+</pre></div>
+
+<p>A variadic macro can have named arguments as well as variable
+arguments, so <code>eprintf</code> can be defined like this, instead:
+</p>
+<div class="example">
+<pre class="example">#define eprintf(format, &hellip;) \
+  fprintf (stderr, format, __VA_ARGS__)
+</pre></div>
+
+<p>This formulation is more descriptive, but what if you want to specify
+a format string that takes no arguments?  In GNU C, you can omit the
+comma before the variable arguments if they are empty, but that puts
+an extra comma in the expansion:
+</p>
+<div class="example">
+<pre class="example">eprintf (&quot;success!\n&quot;)
+     &rarr; fprintf(stderr, &quot;success!\n&quot;, );
+</pre></div>
+
+<p>That&rsquo;s an error in the call to <code>fprintf</code>.
+</p>
+<p>To get rid of that comma, the <code>##</code> token paste operator has a
+special meaning when placed between a comma and a variable
+argument.<a id="DOCF10" href="#FOOT10"><sup>10</sup></a>  If you write
+</p>
+<div class="example">
+<pre class="example">#define eprintf(format, &hellip;) \
+  fprintf (stderr, format, ##__VA_ARGS__)
+</pre></div>
+
+<p>then use the macro <code>eprintf</code> with empty variable arguments,
+<code>##</code> deletes the preceding comma.
+</p>
+<div class="example">
+<pre class="example">eprintf (&quot;success!\n&quot;)
+     &rarr; fprintf(stderr, &quot;success!\n&quot;);
+</pre></div>
+
+<p>This does <em>not</em> happen if you pass an empty argument, nor does it
+happen if the token preceding <code>##</code> is anything other than a
+comma.
+</p>
+<p>When the only macro parameter is a variable arguments parameter, and
+the macro call has no argument at all, it is not obvious whether that
+means an empty argument or a missing argument.  Should the comma be
+kept, or deleted?  The C standard says to keep the comma, but the
+preexisting GNU C extension deleted the comma.  Nowadays, GNU C
+retains the comma when implementing a specific C standard, and deletes
+it otherwise.
+</p>
+<p>C99 mandates that the only place the identifier <code><span class="nolinebreak">__VA_ARGS__</span><!-- /@w --></code>
+can appear is in the replacement list of a variadic macro.  It may not
+be used as a macro name, macro parameter name, or within a different
+type of macro.  It may also be forbidden in open text; the standard is
+ambiguous.  We recommend you avoid using that name except for its
+special purpose.
+</p>
+<p>Variadic macros where you specify the parameter name is a GNU C
+feature that has been supported for a long time.  Standard C, as of
+C99, supports only the form where the parameter is called
+<code><span class="nolinebreak">__VA_ARGS__</span><!-- /@w --></code>.  For portability to previous versions of GNU C
+you should use only named variable argument parameters.  On the other
+hand, for portability to other C99 compilers, you should use only
+<code><span class="nolinebreak">__VA_ARGS__</span><!-- /@w --></code>.
+</p>
+<div class="footnote">
+<hr>
+<h4 class="footnotes-heading">Footnotes</h4>
+
+<h5><a id="FOOT9" href="#DOCF9">(9)</a></h3>
+<p>GNU C extension.</p>
+<h5><a id="FOOT10" href="#DOCF10">(10)</a></h3>
+<p>GNU C extension.</p>
+</div>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Predefined-Macros.html" accesskey="n" rel="next">Predefined Macros</a>, Previous: <a href="Concatenation.html" accesskey="p" rel="prev">Concatenation</a>, Up: <a href="Macros.html" accesskey="u" rel="up">Macros</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Void-Pointers.html
===================================================================
--- public/doc/gnu-c/Void-Pointers.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Void-Pointers.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,147 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Void Pointers (GNU C Language Manual)</title>
+
+<meta name="description" content="Void Pointers (GNU C Language Manual)">
+<meta name="keywords" content="Void Pointers (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Pointers.html" rel="up" title="Pointers">
+<link href="Pointer-Comparison.html" rel="next" title="Pointer Comparison">
+<link href="Invalid-Dereference.html" rel="prev" title="Invalid Dereference">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Void-Pointers"></span><div class="header">
+<p>
+Next: <a href="Pointer-Comparison.html" accesskey="n" rel="next">Pointer Comparison</a>, Previous: <a href="Invalid-Dereference.html" accesskey="p" rel="prev">Invalid Dereference</a>, Up: <a href="Pointers.html" accesskey="u" rel="up">Pointers</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>
+</div>
+<hr>
+<span id="Void-Pointers-1"></span><h3 class="section">14.8 Void Pointers</h3>
+<span id="index-void-pointers"></span>
+<span id="index-pointers_002c-void"></span>
+
+<p>The peculiar type <code>void *</code>, a pointer whose target type is
+<code>void</code>, is used often in C.  It represents a pointer to
+we-don&rsquo;t-say-what.  Thus,
+</p>
+<div class="example">
+<pre class="example">void *numbered_slot_pointer (int);
+</pre></div>
+
+<p>declares a function <code>numbered_slot_pointer</code> that takes an
+integer parameter and returns a pointer, but we don&rsquo;t say what type of
+data it points to.
+</p>
+<p>With type <code>void *</code>, you can pass the pointer around and test
+whether it is null.  However, dereferencing it gives a <code>void</code>
+value that can&rsquo;t be used (see <a href="The-Void-Type.html">The Void Type</a>).  To dereference the
+pointer, first convert it to some other pointer type.
+</p>
+<p>Assignments convert <code>void *</code> automatically to any other pointer
+type, if the left operand has a pointer type; for instance,
+</p>
+<div class="example">
+<pre class="example">{
+  int *p;
+  /* <span class="roman">Converts return value to <code>int *</code>.</span>  */
+  p = numbered_slot_pointer (5);
+  <span class="roman">&hellip;</span>
+}
+</pre></div>
+
+<p>Passing an argument of type <code>void *</code> for a parameter that has a
+pointer type also converts.  For example, supposing the function
+<code>hack</code> is declared to require type <code>float *</code> for its
+argument, this will convert the null pointer to that type.
+</p>
+<div class="example">
+<pre class="example">/* <span class="roman">Declare <code>hack</code> that way.</span>
+   <span class="roman">We assume it is defined somewhere else.</span>  */
+void hack (float *);
+&hellip;
+/* <span class="roman">Now call <code>hack</code>.</span>  */
+{
+  /* <span class="roman">Converts return value of <code>numbered_slot_pointer</code></span>
+     <span class="roman">to <code>float *</code> to pass it to <code>hack</code>.</span>  */
+  hack (numbered_slot_pointer (5));
+  <span class="roman">&hellip;</span>
+}
+</pre></div>
+
+<p>You can also convert to another pointer type with an explicit cast
+(see <a href="Explicit-Type-Conversion.html">Explicit Type Conversion</a>), like this:
+</p><div class="example">
+<pre class="example">(int *) numbered_slot_pointer (5)
+</pre></div>
+
+<p>Here is an example which decides at run time which pointer
+type to convert to:
+</p>
+<div class="example">
+<pre class="example">void
+extract_int_or_double (void *ptr, bool its_an_int)
+{
+  if (its_an_int)
+    handle_an_int (*(int *)ptr);
+  else 
+    handle_a_double (*(double *)ptr);
+}
+</pre></div>
+
+<p>The expression <code>*(int *)ptr</code> means to convert <code>ptr</code>
+to type <code>int *</code>, then dereference it.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Pointer-Comparison.html" accesskey="n" rel="next">Pointer Comparison</a>, Previous: <a href="Invalid-Dereference.html" accesskey="p" rel="prev">Invalid Dereference</a>, Up: <a href="Pointers.html" accesskey="u" rel="up">Pointers</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Whitespace.html
===================================================================
--- public/doc/gnu-c/Whitespace.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Whitespace.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,106 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Whitespace (GNU C Language Manual)</title>
+
+<meta name="description" content="Whitespace (GNU C Language Manual)">
+<meta name="keywords" content="Whitespace (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Lexical-Syntax.html" rel="up" title="Lexical Syntax">
+<link href="Comments.html" rel="next" title="Comments">
+<link href="Characters.html" rel="prev" title="Characters">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Whitespace"></span><div class="header">
+<p>
+Next: <a href="Comments.html" accesskey="n" rel="next">Comments</a>, Previous: <a href="Characters.html" accesskey="p" rel="prev">Characters</a>, Up: <a href="Lexical-Syntax.html" accesskey="u" rel="up">Lexical Syntax</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>
+</div>
+<hr>
+<span id="Whitespace-1"></span><h3 class="section">5.3 Whitespace</h3>
+<span id="index-whitespace-characters-in-source-files"></span>
+<span id="index-space-character-in-source"></span>
+<span id="index-tab-character-in-source"></span>
+<span id="index-formfeed-in-source"></span>
+<span id="index-linefeed-in-source"></span>
+<span id="index-newline-in-source"></span>
+<span id="index-carriage-return-in-source"></span>
+<span id="index-vertical-tab-in-source"></span>
+
+<p>Whitespace means characters that exist in a file but appear blank in a
+printed listing of a file (or traditionally did appear blank, several
+decades ago).  The C language requires whitespace in order to separate
+two consecutive identifiers, or to separate an identifier from a
+numeric constant.  Other than that, and a few special situations
+described later, whitespace is optional; you can put it in when you
+wish, to make the code easier to read.
+</p>
+<p>Space and tab in C code are treated as whitespace characters.  So are
+line breaks.  You can represent a line break with the newline
+character (also called <em>linefeed</em> or LF), CR (carriage return), or
+the CRLF sequence (two characters: carriage return followed by a
+newline character).
+</p>
+<p>The <em>formfeed</em> character, Control-L, was traditionally used to
+divide a file into pages.  It is still used this way in source code,
+and the tools that generate nice printouts of source code still start
+a new page after each &ldquo;formfeed&rdquo; character.  Dividing code into
+pages separated by formfeed characters is a good way to break it up
+into comprehensible pieces and show other programmers where they start
+and end.
+</p>
+<p>The <em>vertical tab</em> character, Control-K, was traditionally used to
+make printing advance down to the next section of a page.  We know of
+no particular reason to use it in source code, but it is still
+accepted as whitespace in C.
+</p>
+<p>Comments are also syntactically equivalent to whitespace.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Wide-Character-Constants.html
===================================================================
--- public/doc/gnu-c/Wide-Character-Constants.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Wide-Character-Constants.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,108 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Wide Character Constants (GNU C Language Manual)</title>
+
+<meta name="description" content="Wide Character Constants (GNU C Language Manual)">
+<meta name="keywords" content="Wide Character Constants (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Constants.html" rel="up" title="Constants">
+<link href="Wide-String-Constants.html" rel="next" title="Wide String Constants">
+<link href="Unicode-Character-Codes.html" rel="prev" title="Unicode Character Codes">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Wide-Character-Constants"></span><div class="header">
+<p>
+Next: <a href="Wide-String-Constants.html" accesskey="n" rel="next">Wide String Constants</a>, Previous: <a href="Unicode-Character-Codes.html" accesskey="p" rel="prev">Unicode Character Codes</a>, Up: <a href="Constants.html" accesskey="u" rel="up">Constants</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>
+</div>
+<hr>
+<span id="Wide-Character-Constants-1"></span><h3 class="section">12.10 Wide Character Constants</h3>
+<span id="index-wide-character-constants"></span>
+<span id="index-constants_002c-wide-character"></span>
+
+<p>A <em>wide character constant</em> represents characters with more than 8
+bits of character code.  This is an obscure feature that we need to
+document but that you probably won&rsquo;t ever use.  If you&rsquo;re just
+learning C, you may as well skip this section.
+</p>
+<p>The original C wide character constant looks like &lsquo;<samp>L</samp>&rsquo; (upper
+case!) followed immediately by an ordinary character constant (with no
+intervening space).  Its data type is <code>wchar_t</code>, which is an
+alias defined in <samp>stddef.h</samp> for one of the standard integer
+types.  Depending on the platform, it could be 16 bits or 32 bits.  If
+it is 16 bits, these character constants use the UTF-16 form of
+Unicode; if 32 bits, UTF-32.
+</p>
+<p>There are also Unicode wide character constants which explicitly
+specify the width.  These constants start with &lsquo;<samp>u</samp>&rsquo; or &lsquo;<samp>U</samp>&rsquo;
+instead of &lsquo;<samp>L</samp>&rsquo;.  &lsquo;<samp>u</samp>&rsquo; specifies a 16-bit Unicode wide
+character constant, and &lsquo;<samp>U</samp>&rsquo; a 32-bit Unicode wide character
+constant.  Their types are, respectively, <code>char16_t</code> and
+<code><span class="nolinebreak">char32_t</span></code><!-- /@w -->; they are declared in the header file
+<samp>uchar.h</samp>.  These character constants are valid even if
+<samp>uchar.h</samp> is not included, but some uses of them may be
+inconvenient without including it to declare those type names.
+</p>
+<p>The character represented in a wide character constant can be an
+ordinary ASCII character.  <code>L'a'</code>, <code>u'a'</code> and <code>U'a'</code> 
+are all valid, and they are all equal to <code>'a'</code>.
+</p>
+<p>In all three kinds of wide character constants, you can write a
+non-ASCII Unicode character in the constant itself; the constant&rsquo;s
+value is the character&rsquo;s Unicode character code.  Or you can specify
+the Unicode character with an escape sequence (see <a href="Unicode-Character-Codes.html">Unicode Character Codes</a>).
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Wide-String-Constants.html" accesskey="n" rel="next">Wide String Constants</a>, Previous: <a href="Unicode-Character-Codes.html" accesskey="p" rel="prev">Unicode Character Codes</a>, Up: <a href="Constants.html" accesskey="u" rel="up">Constants</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Wide-String-Constants.html
===================================================================
--- public/doc/gnu-c/Wide-String-Constants.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Wide-String-Constants.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,128 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Wide String Constants (GNU C Language Manual)</title>
+
+<meta name="description" content="Wide String Constants (GNU C Language Manual)">
+<meta name="keywords" content="Wide String Constants (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Constants.html" rel="up" title="Constants">
+<link href="Type-Size.html" rel="next" title="Type Size">
+<link href="Wide-Character-Constants.html" rel="prev" title="Wide Character Constants">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Wide-String-Constants"></span><div class="header">
+<p>
+Previous: <a href="Wide-Character-Constants.html" accesskey="p" rel="prev">Wide Character Constants</a>, Up: <a href="Constants.html" accesskey="u" rel="up">Constants</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>
+</div>
+<hr>
+<span id="Wide-String-Constants-1"></span><h3 class="section">12.11 Wide String Constants</h3>
+<span id="index-wide-string-constants"></span>
+<span id="index-constants_002c-wide-string"></span>
+
+<p>A <em>wide string constant</em> stands for an array of 16-bit or 32-bit
+characters.  They are rarely used; if you&rsquo;re just
+learning C, you may as well skip this section.
+</p>
+<p>There are three kinds of wide string constants, which differ in the
+data type used for each character in the string.  Each wide string
+constant is equivalent to an array of integers, but the data type of
+those integers depends on the kind of wide string.  Using the constant
+in an expression will convert the array to a pointer to its first
+element, as usual for arrays in C (see <a href="Accessing-Array-Elements.html">Accessing Array Elements</a>).
+For each kind of wide string constant, we state here what type that
+pointer will be.
+</p>
+<dl compact="compact">
+<dt><code>char16_t</code></dt>
+<dd><p>This is a 16-bit Unicode wide string constant: each element is a
+16-bit Unicode character code with type <code>char16_t</code>, so the string
+has the pointer type <code>char16_t&nbsp;*</code>.  (That is a type designator;
+see <a href="Pointer-Type-Designators.html">Pointer Type Designators</a>.)  The constant is written as
+&lsquo;<samp>u</samp>&rsquo; (which must be lower case) followed (with no intervening
+space) by a string constant with the usual syntax.
+</p>
+</dd>
+<dt><code>char32_t</code></dt>
+<dd><p>This is a 32-bit Unicode wide string constant: each element is a
+32-bit Unicode character code, and the string has type <code>char32_t&nbsp;*</code>.
+It&rsquo;s written as &lsquo;<samp>U</samp>&rsquo; (which must be upper case) followed (with no
+intervening space) by a string constant with the usual syntax.
+</p>
+</dd>
+<dt><code>wchar_t</code></dt>
+<dd><p>This is the original kind of wide string constant.  It&rsquo;s written as
+&lsquo;<samp>L</samp>&rsquo; (which must be upper case) followed (with no intervening
+space) by a string constant with the usual syntax, and the string has
+type <code>wchar_t&nbsp;*</code>.
+</p>
+<p>The width of the data type <code>wchar_t</code> depends on the target
+platform, which makes this kind of wide string somewhat less useful
+than the newer kinds.
+</p></dd>
+</dl>
+
+<p><code>char16_t</code> and <code>char32_t</code> are declared in the header file
+<samp>uchar.h</samp>.  <code>wchar_t</code> is declared in <samp>stddef.h</samp>.
+</p>
+<p>Consecutive wide string constants of the same kind concatenate, just
+like ordinary string constants.  A wide string constant concatenated
+with an ordinary string constant results in a wide string constant.
+You can&rsquo;t concatenate two wide string constants of different kinds.
+You also can&rsquo;t concatenate a wide string constant (of any kind) with a
+UTF-8 string constant.
+</p>
+<hr>
+<div class="header">
+<p>
+Previous: <a href="Wide-Character-Constants.html" accesskey="p" rel="prev">Wide Character Constants</a>, Up: <a href="Constants.html" accesskey="u" rel="up">Constants</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Write-Assignments-Separately.html
===================================================================
--- public/doc/gnu-c/Write-Assignments-Separately.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Write-Assignments-Separately.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,105 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Write Assignments Separately (GNU C Language Manual)</title>
+
+<meta name="description" content="Write Assignments Separately (GNU C Language Manual)">
+<meta name="keywords" content="Write Assignments Separately (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Assignment-Expressions.html" rel="up" title="Assignment Expressions">
+<link href="Execution-Control-Expressions.html" rel="next" title="Execution Control Expressions">
+<link href="Assignment-in-Subexpressions.html" rel="prev" title="Assignment in Subexpressions">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Write-Assignments-Separately"></span><div class="header">
+<p>
+Previous: <a href="Assignment-in-Subexpressions.html" accesskey="p" rel="prev">Assignment in Subexpressions</a>, Up: <a href="Assignment-Expressions.html" accesskey="u" rel="up">Assignment Expressions</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>
+</div>
+<hr>
+<span id="Write-Assignments-in-Separate-Statements"></span><h3 class="section">7.7 Write Assignments in Separate Statements</h3>
+
+<p>It is often convenient to write an assignment inside an
+<code>if</code>-condition, but that can reduce the readability of the
+program.  Here&rsquo;s an example of what to avoid:
+</p>
+<div class="example">
+<pre class="example">if (x = advance (x))
+  <span class="roman">&hellip;</span>
+</pre></div>
+
+<p>The idea here is to advance <code>x</code> and test if the value is nonzero.
+However, readers might miss the fact that it uses &lsquo;<samp>=</samp>&rsquo; and not
+&lsquo;<samp>==</samp>&rsquo;.  In fact, writing &lsquo;<samp>=</samp>&rsquo; where &lsquo;<samp>==</samp>&rsquo; was intended
+inside a condition is a common error, so GNU C can give warnings when
+&lsquo;<samp>=</samp>&rsquo; appears in a way that suggests it&rsquo;s an error.
+</p>
+<p>It is much clearer to write the assignment as a separate statement, like this:
+</p>
+<div class="example">
+<pre class="example">x = advance (x);
+if (x != 0)
+  <span class="roman">&hellip;</span>
+</pre></div>
+
+<p>This makes it unmistakably clear that <code>x</code> is assigned a new value.
+</p>
+<p>Another method is to use the comma operator (see <a href="Comma-Operator.html">Comma Operator</a>),
+like this:
+</p>
+<div class="example">
+<pre class="example">if (x = advance (x), x != 0)
+  <span class="roman">&hellip;</span>
+</pre></div>
+
+<p>However, putting the assignment in a separate statement is usually clearer
+unless the assignment is very short, because it reduces nesting.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/Zero-Length.html
===================================================================
--- public/doc/gnu-c/Zero-Length.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/Zero-Length.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,93 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Zero Length (GNU C Language Manual)</title>
+
+<meta name="description" content="Zero Length (GNU C Language Manual)">
+<meta name="keywords" content="Zero Length (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Structures.html" rel="up" title="Structures">
+<link href="Flexible-Array-Fields.html" rel="next" title="Flexible Array Fields">
+<link href="const-Fields.html" rel="prev" title="const Fields">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="Zero-Length"></span><div class="header">
+<p>
+Next: <a href="Flexible-Array-Fields.html" accesskey="n" rel="next">Flexible Array Fields</a>, Previous: <a href="const-Fields.html" accesskey="p" rel="prev">const Fields</a>, Up: <a href="Structures.html" accesskey="u" rel="up">Structures</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>
+</div>
+<hr>
+<span id="Arrays-of-Length-Zero"></span><h3 class="section">15.9 Arrays of Length Zero</h3>
+<span id="index-array-of-length-zero"></span>
+<span id="index-zero_002dlength-arrays"></span>
+<span id="index-length_002dzero-arrays"></span>
+
+<p>GNU C allows zero-length arrays.  They are useful as the last element
+of a structure that is really a header for a variable-length object.
+Here&rsquo;s an example, where we construct a variable-size structure
+to hold a line which is <code>this_length</code> characters long:
+</p>
+<div class="example">
+<pre class="example">struct line {
+  int length;
+  char contents[0];
+};
+
+struct line *thisline
+  = ((struct line *)
+     malloc (sizeof (struct line)
+             + this_length));
+thisline-&gt;length = this_length;
+</pre></div>
+
+<p>In ISO C90, we would have to give <code>contents</code> a length of 1, which
+means either wasting space or complicating the argument to <code>malloc</code>.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/auto-and-register.html
===================================================================
--- public/doc/gnu-c/auto-and-register.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/auto-and-register.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,86 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>auto and register (GNU C Language Manual)</title>
+
+<meta name="description" content="auto and register (GNU C Language Manual)">
+<meta name="keywords" content="auto and register (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Variables.html" rel="up" title="Variables">
+<link href="Omitting-Types.html" rel="next" title="Omitting Types">
+<link href="Allocating-File_002dScope.html" rel="prev" title="Allocating File-Scope">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="auto-and-register"></span><div class="header">
+<p>
+Next: <a href="Omitting-Types.html" accesskey="n" rel="next">Omitting Types</a>, Previous: <a href="Allocating-File_002dScope.html" accesskey="p" rel="prev">Allocating File-Scope</a>, Up: <a href="Variables.html" accesskey="u" rel="up">Variables</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>
+</div>
+<hr>
+<span id="auto-and-register-1"></span><h3 class="section">20.10 <code>auto</code> and <code>register</code></h3>
+<span id="index-auto-declarations"></span>
+<span id="index-register-declarations"></span>
+<span id="index-auto"></span>
+<span id="index-register"></span>
+
+<p>For historical reasons, you can write <code>auto</code> or <code>register</code>
+before a local variable declaration.  <code>auto</code> merely emphasizes
+that the variable isn&rsquo;t static; it changes nothing.
+</p>
+<p><code>register</code> suggests to the compiler storing this variable in a
+register.  However, GNU C ignores this suggestion, since it can
+choose the best variables to store in registers without any hints.
+</p>
+<p>It is an error to take the address of a variable declared
+<code>register</code>, so you cannot use the unary &lsquo;<samp>&amp;</samp>&rsquo; operator on it.
+If the variable is an array, you can&rsquo;t use it at all (other than as
+the operand of <code>sizeof</code>), which makes it rather useless.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/break-Statement.html
===================================================================
--- public/doc/gnu-c/break-Statement.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/break-Statement.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,125 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>break Statement (GNU C Language Manual)</title>
+
+<meta name="description" content="break Statement (GNU C Language Manual)">
+<meta name="keywords" content="break Statement (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Loop-Statements.html" rel="up" title="Loop Statements">
+<link href="for-Statement.html" rel="next" title="for Statement">
+<link href="do_002dwhile-Statement.html" rel="prev" title="do-while Statement">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="break-Statement"></span><div class="header">
+<p>
+Next: <a href="for-Statement.html" accesskey="n" rel="next">for Statement</a>, Previous: <a href="do_002dwhile-Statement.html" accesskey="p" rel="prev">do-while Statement</a>, Up: <a href="Loop-Statements.html" accesskey="u" rel="up">Loop Statements</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>
+</div>
+<hr>
+<span id="break-Statement-1"></span><h4 class="subsection">19.6.3 <code>break</code> Statement</h4>
+<span id="index-break-statement"></span>
+<span id="index-statement_002c-break"></span>
+<span id="index-break"></span>
+
+<p>The <code>break</code> statement looks like &lsquo;<samp>break;</samp>&rsquo;.  Its effect is to
+exit immediately from the innermost loop construct or <code>switch</code>
+statement (see <a href="switch-Statement.html">switch Statement</a>).
+</p>
+<p>For example, this loop advances <code>p</code> until the next null
+character or newline.
+</p>
+<div class="example">
+<pre class="example">while (*p)
+  {
+    /* <span class="roman">End loop if we have reached a newline.</span>  */
+    if (*p == '\n')
+      break;
+    p++
+  }
+</pre></div>
+
+<p>When there are nested loops, the <code>break</code> statement exits from the
+innermost loop containing it.
+</p>
+<div class="example">
+<pre class="example">struct list_if_tuples
+{
+  struct list_if_tuples next;
+  int length;
+  data *contents;
+};
+
+void
+process_all_elements (struct list_if_tuples *list)
+{
+  while (list)
+    {
+      /* <span class="roman">Process all the elements in this node&rsquo;s vector,</span>
+         <span class="roman">stopping when we reach one that is null.</span>  */
+      for (i = 0; i &lt; list-&gt;length; i++
+        {
+          /* <span class="roman">Null element terminates this node&rsquo;s vector.</span>  */
+          if (list-&gt;contents[i] == NULL)
+            /* <span class="roman">Exit the <code>for</code> loop.</span>  */
+            break;
+          /* <span class="roman">Operate on the next element.</span>  */
+          process_element (list-&gt;contents[i]);
+        }
+
+      list = list-&gt;next;
+    }
+}
+</pre></div>
+
+<p>The only way in C to exit from an outer loop is with
+<code>goto</code> (see <a href="goto-Statement.html">goto Statement</a>).
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/const-Fields.html
===================================================================
--- public/doc/gnu-c/const-Fields.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/const-Fields.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,107 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>const Fields (GNU C Language Manual)</title>
+
+<meta name="description" content="const Fields (GNU C Language Manual)">
+<meta name="keywords" content="const Fields (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Structures.html" rel="up" title="Structures">
+<link href="Zero-Length.html" rel="next" title="Zero Length">
+<link href="Bit-Field-Packing.html" rel="prev" title="Bit Field Packing">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="const-Fields"></span><div class="header">
+<p>
+Next: <a href="Zero-Length.html" accesskey="n" rel="next">Zero Length</a>, Previous: <a href="Bit-Field-Packing.html" accesskey="p" rel="prev">Bit Field Packing</a>, Up: <a href="Structures.html" accesskey="u" rel="up">Structures</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>
+</div>
+<hr>
+<span id="const-Fields-1"></span><h3 class="section">15.8 <code>const</code> Fields</h3>
+<span id="index-const-fields"></span>
+<span id="index-structure-fields_002c-constant"></span>
+
+
+<p>A structure field declared <code>const</code> cannot be assigned to
+(see <a href="const.html">const</a>).  For instance, let&rsquo;s define this modified version of
+<code>struct intlistlink</code>:
+</p>
+<div class="example">
+<pre class="example">struct intlistlink_ro  /* <span class="roman">&ldquo;ro&rdquo; for read-only.</span>  */
+  {
+    const int datum;
+    struct intlistlink *next;
+  };
+</pre></div>
+
+<p>This structure can be used to prevent part of the code from modifying
+the <code>datum</code> field:
+</p>
+<div class="example">
+<pre class="example">/* <span class="roman"><code>p</code> has type <code>struct intlistlink *</code>.</span>
+   <span class="roman">Convert it to <code>struct intlistlink_ro *</code>.</span>  */
+struct intlistlink_ro *q
+  = (struct intlistlink_ro *) p;
+
+q-&gt;datum = 5;     /* <span class="roman">Error!</span> */
+p-&gt;datum = 5;     /* <span class="roman">Valid since <code>*p</code> is</span>
+                     <span class="roman">not a <code>struct intlistlink_ro</code>.</span>  */
+</pre></div>
+
+<p>A <code>const</code> field can get a value in two ways: by initialization of
+the whole structure, and by making a pointer-to-structure point to an object
+in which that field already has a value.
+</p>
+<p>Any <code>const</code> field in a structure type makes assignment impossible
+for structures of that type (see <a href="Structure-Assignment.html">Structure Assignment</a>).  That is
+because structure assignment works by assigning the structure&rsquo;s
+fields, one by one.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/const.html
===================================================================
--- public/doc/gnu-c/const.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/const.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,151 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>const (GNU C Language Manual)</title>
+
+<meta name="description" content="const (GNU C Language Manual)">
+<meta name="keywords" content="const (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Type-Qualifiers.html" rel="up" title="Type Qualifiers">
+<link href="volatile.html" rel="next" title="volatile">
+<link href="Type-Qualifiers.html" rel="prev" title="Type Qualifiers">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="const"></span><div class="header">
+<p>
+Next: <a href="volatile.html" accesskey="n" rel="next">volatile</a>, Up: <a href="Type-Qualifiers.html" accesskey="u" rel="up">Type Qualifiers</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>
+</div>
+<hr>
+<span id="const-Variables-and-Fields"></span><h3 class="section">21.1 <code>const</code> Variables and Fields</h3>
+<span id="index-const-variables-and-fields"></span>
+<span id="index-variables_002c-const"></span>
+<span id="index-const"></span>
+
+<p>You can mark a variable as &ldquo;constant&rdquo; by writing <code>const</code> in
+front of the declaration.  This says to treat any assignment to that
+variable as an error.  It may also permit some compiler
+optimizations&mdash;for instance, to fetch the value only once to satisfy
+multiple references to it.  The construct looks like this:
+</p>
+<div class="example">
+<pre class="example">const double pi = 3.14159;
+</pre></div>
+
+<p>After this definition, the code can use the variable <code>pi</code>
+but cannot assign a different value to it.
+</p>
+<div class="example">
+<pre class="example">pi = 3.0; /* <span class="roman">Error!</span> */
+</pre></div>
+
+<p>Simple variables that are constant can be used for the same purposes
+as enumeration constants, and they are not limited to integers.  The
+constantness of the variable propagates into pointers, too.
+</p>
+<p>A pointer type can specify that the <em>target</em> is constant.  For
+example, the pointer type <code>const double *</code> stands for a pointer
+to a constant <code>double</code>.  That&rsquo;s the typethat results from taking
+the address of <code>pi</code>.  Such a pointer can&rsquo;t be dereferenced in the
+left side of an assignment.
+</p>
+<div class="example">
+<pre class="example">*(&amp;pi) = 3.0; /* <span class="roman">Error!</span> */
+</pre></div>
+
+<p>Nonconstant pointers can be converted automatically to constant
+pointers, but not vice versa.  For instance,
+</p>
+<div class="example">
+<pre class="example">const double *cptr;
+double *ptr;
+
+cptr = &amp;pi;    /* <span class="roman">Valid.</span> */
+cptr = ptr;    /* <span class="roman">Valid.</span> */
+ptr = cptr;    /* <span class="roman">Error!</span> */
+ptr = &amp;pi;     /* <span class="roman">Error!</span> */
+</pre></div>
+
+<p>This is not an ironclad protection against modifying the value.  You
+can always cast the constant pointer to a nonconstant pointer type:
+</p>
+<div class="example">
+<pre class="example">ptr = (double *)cptr;    /* <span class="roman">Valid.</span> */
+ptr = (double *)&amp;pi;     /* <span class="roman">Valid.</span> */
+</pre></div>
+
+<p>However, <code>const</code> provides a way to show that a certain function
+won&rsquo;t modify the data structure whose address is passed to it.  Here&rsquo;s
+an example:
+</p>
+<div class="example">
+<pre class="example">int
+string_length (const char *string)
+{
+  int count = 0;
+  while (*string++)
+    count++;
+  return count;
+}
+</pre></div>
+
+<p>Using <code>const char *</code> for the parameter is a way of saying this
+function never modifies the memory of the string itself.
+</p>
+<p>In calling <code>string_length</code>, you can specify an ordinary
+<code>char *</code> since that can be converted automatically to <code>const
+char *</code>.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="volatile.html" accesskey="n" rel="next">volatile</a>, Up: <a href="Type-Qualifiers.html" accesskey="u" rel="up">Type Qualifiers</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/continue-Statement.html
===================================================================
--- public/doc/gnu-c/continue-Statement.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/continue-Statement.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,120 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>continue Statement (GNU C Language Manual)</title>
+
+<meta name="description" content="continue Statement (GNU C Language Manual)">
+<meta name="keywords" content="continue Statement (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Loop-Statements.html" rel="up" title="Loop Statements">
+<link href="switch-Statement.html" rel="next" title="switch Statement">
+<link href="for_002dIndex-Declarations.html" rel="prev" title="for-Index Declarations">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="continue-Statement"></span><div class="header">
+<p>
+Previous: <a href="for_002dIndex-Declarations.html" accesskey="p" rel="prev">for-Index Declarations</a>, Up: <a href="Loop-Statements.html" accesskey="u" rel="up">Loop Statements</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>
+</div>
+<hr>
+<span id="continue-Statement-1"></span><h4 class="subsection">19.6.8 <code>continue</code> Statement</h4>
+<span id="index-continue-statement"></span>
+<span id="index-statement_002c-continue"></span>
+<span id="index-continue"></span>
+
+<p>The <code>continue</code> statement looks like &lsquo;<samp>continue;</samp>&rsquo;, and its
+effect is to jump immediately to the end of the innermost loop
+construct.  If it is a <code>for</code>-loop, the next thing that happens
+is to execute the loop&rsquo;s <var>advance</var> expression.
+</p>
+<p>For example, this loop increments <code>p</code> until the next null character
+or newline, and operates (in some way not shown) on all the characters
+in the line except for spaces.  All it does with spaces is skip them.
+</p>
+<div class="example">
+<pre class="example">for (;*p; ++p)
+  {
+    /* <span class="roman">End loop if we have reached a newline.</span>  */
+    if (*p == '\n')
+      break;
+    /* <span class="roman">Pay no attention to spaces.</span>  */
+    if (*p == ' ')
+      continue;
+    /* <span class="roman">Operate on the next character.</span>  */
+    <span class="roman">&hellip;</span>
+  }
+</pre></div>
+
+<p>Executing &lsquo;<samp>continue;</samp>&rsquo; skips the loop body but it does not
+skip the <var>advance</var> expression, <code>p++</code>.
+</p>
+<p>We could also write it like this:
+</p>
+<div class="example">
+<pre class="example">for (;*p; ++p)
+  {
+    /* <span class="roman">Exit if we have reached a newline.</span>  */
+    if (*p == '\n')
+      break;
+    /* <span class="roman">Pay no attention to spaces.</span>  */
+    if (*p != ' ')
+      {
+        /* <span class="roman">Operate on the next character.</span>  */
+        <span class="roman">&hellip;</span>
+      }
+  }
+</pre></div>
+
+<p>The advantage of using <code>continue</code> is that it reduces the
+depth of nesting.
+</p>
+<p>Contrast <code>continue</code> with the <code>break</code> statement.  See <a href="break-Statement.html">break Statement</a>.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/defined.html
===================================================================
--- public/doc/gnu-c/defined.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/defined.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,114 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>defined (GNU C Language Manual)</title>
+
+<meta name="description" content="defined (GNU C Language Manual)">
+<meta name="keywords" content="defined (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Conditional-Syntax.html" rel="up" title="Conditional Syntax">
+<link href="else.html" rel="next" title="else">
+<link href="if.html" rel="prev" title="if">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="defined"></span><div class="header">
+<p>
+Next: <a href="else.html" accesskey="n" rel="next">else</a>, Previous: <a href="if.html" accesskey="p" rel="prev">if</a>, Up: <a href="Conditional-Syntax.html" accesskey="u" rel="up">Conditional Syntax</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>
+</div>
+<hr>
+<span id="The-defined-test"></span><h4 class="subsubsection">26.6.2.3 The <code>defined</code> test</h4>
+
+<span id="index-defined"></span>
+<p>The special operator <code>defined</code> is used in <code>#if</code> and
+<code>#elif</code> expressions to test whether a certain name is defined as a
+macro.  <code>defined <var>name</var></code> and <code>defined (<var>name</var>)</code> are
+both expressions whose value is 1 if <var>name</var> is defined as a macro at
+the current point in the program, and 0 otherwise.  Thus,  <code>#if&nbsp;defined&nbsp;MACRO<!-- /@w --></code> is precisely equivalent to <code>#ifdef&nbsp;MACRO<!-- /@w --></code>.
+</p>
+<p><code>defined</code> is useful when you wish to test more than one macro for
+existence at once.  For example,
+</p>
+<div class="example">
+<pre class="example">#if defined (__arm__) || defined (__PPC__)
+</pre></div>
+
+<p>would succeed if either of the names <code>__arm__</code> or
+<code>__PPC__</code> is defined as a macro&mdash;in other words,
+when compiling for ARM processors or PowerPC processors.
+</p>
+<p>Conditionals written like this:
+</p>
+<div class="example">
+<pre class="example">#if defined BUFSIZE &amp;&amp; BUFSIZE &gt;= 1024
+</pre></div>
+
+<p>can generally be simplified to just <code>#if&nbsp;BUFSIZE&nbsp;&gt;=&nbsp;1024<!-- /@w --></code>,
+since if <code>BUFSIZE</code> is not defined, it will be interpreted as having
+the value zero.
+</p>
+<p>In GCC, you can include <code>defined</code> as part of another macro definition,
+like this:
+</p>
+<div class="example">
+<pre class="example">#define MACRO_DEFINED(X) defined X
+
+#if MACRO_DEFINED(BUFSIZE)
+</pre></div>
+
+<p>which would expand the <code>#if</code> expression to:
+</p>
+<div class="example">
+<pre class="example">#if defined BUFSIZE
+</pre></div>
+
+<p>Generating <code>defined</code> in this way is a GNU C extension.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/do_002dwhile-Statement.html
===================================================================
--- public/doc/gnu-c/do_002dwhile-Statement.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/do_002dwhile-Statement.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,89 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>do-while Statement (GNU C Language Manual)</title>
+
+<meta name="description" content="do-while Statement (GNU C Language Manual)">
+<meta name="keywords" content="do-while Statement (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Loop-Statements.html" rel="up" title="Loop Statements">
+<link href="break-Statement.html" rel="next" title="break Statement">
+<link href="while-Statement.html" rel="prev" title="while Statement">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="do_002dwhile-Statement"></span><div class="header">
+<p>
+Next: <a href="break-Statement.html" accesskey="n" rel="next">break Statement</a>, Previous: <a href="while-Statement.html" accesskey="p" rel="prev">while Statement</a>, Up: <a href="Loop-Statements.html" accesskey="u" rel="up">Loop Statements</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>
+</div>
+<hr>
+<span id="do_002dwhile-Statement-1"></span><h4 class="subsection">19.6.2 <code>do-while</code> Statement</h4>
+<span id="index-do_002d_002dwhile-statement"></span>
+<span id="index-statement_002c-do_002d_002dwhile"></span>
+<span id="index-do"></span>
+
+<p>The <code>do</code>&ndash;<code>while</code> statement is a simple loop construct that
+performs the test at the end of the iteration.
+</p>
+<div class="example">
+<pre class="example">do
+  <var>body</var>
+while (<var>test</var>);
+</pre></div>
+
+<p>Here, <var>body</var> is a statement (possibly a block) to repeat, and
+<var>test</var> is an expression that controls whether to repeat it again.
+</p>
+<p>Each iteration of the loop starts by executing <var>body</var>.  Then it
+computes <var>test</var> and, if it is true (nonzero), that means to go
+back and start over with <var>body</var>.  If <var>test</var> is false (zero),
+then the loop stops repeating and execution moves on past it.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/elif.html
===================================================================
--- public/doc/gnu-c/elif.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/elif.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,113 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>elif (GNU C Language Manual)</title>
+
+<meta name="description" content="elif (GNU C Language Manual)">
+<meta name="keywords" content="elif (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Conditional-Syntax.html" rel="up" title="Conditional Syntax">
+<link href="Deleted-Code.html" rel="next" title="Deleted Code">
+<link href="else.html" rel="prev" title="else">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="elif"></span><div class="header">
+<p>
+Previous: <a href="else.html" accesskey="p" rel="prev">else</a>, Up: <a href="Conditional-Syntax.html" accesskey="u" rel="up">Conditional Syntax</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>
+</div>
+<hr>
+<span id="The-_0023elif-directive"></span><h4 class="subsubsection">26.6.2.5 The <code>#elif</code> directive</h4>
+
+<span id="index-_0023elif"></span>
+<p>One common case of nested conditionals is used to check for more than two
+possible alternatives.  For example, you might have
+</p>
+<div class="example">
+<pre class="example">#if X == 1
+/* <span class="roman">&hellip;</span> */
+#else /* X != 1 */
+#if X == 2
+/* <span class="roman">&hellip;</span> */
+#else /* X != 2 */
+/* <span class="roman">&hellip;</span> */
+#endif /* X != 2 */
+#endif /* X != 1 */
+</pre></div>
+
+<p>Another conditional directive, <code>#elif</code>, allows this to be
+abbreviated as follows:
+</p>
+<div class="example">
+<pre class="example">#if X == 1
+/* <span class="roman">&hellip;</span> */
+#elif X == 2
+/* <span class="roman">&hellip;</span> */
+#else /* X != 2 and X != 1*/
+/* <span class="roman">&hellip;</span> */
+#endif /* X != 2 and X != 1*/
+</pre></div>
+
+<p><code>#elif</code> stands for &ldquo;else if&rdquo;.  Like <code>#else</code>, it goes in the
+middle of a conditional group and subdivides it; it does not require a
+matching <code>#endif</code> of its own.  Like <code>#if</code>, the <code>#elif</code>
+directive includes an expression to be tested.  The text following the
+<code>#elif</code> is processed only if the original <code>#if</code>-condition
+failed and the <code>#elif</code> condition succeeds.
+</p>
+<p>More than one <code>#elif</code> can go in the same conditional group.  Then
+the text after each <code>#elif</code> is processed only if the <code>#elif</code>
+condition succeeds after the original <code>#if</code> and all previous
+<code>#elif</code> directives within it have failed.
+</p>
+<p><code>#else</code> is allowed after any number of <code>#elif</code> directives, but
+<code>#elif</code> may not follow <code>#else</code>.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/else.html
===================================================================
--- public/doc/gnu-c/else.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/else.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,88 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>else (GNU C Language Manual)</title>
+
+<meta name="description" content="else (GNU C Language Manual)">
+<meta name="keywords" content="else (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Conditional-Syntax.html" rel="up" title="Conditional Syntax">
+<link href="elif.html" rel="next" title="elif">
+<link href="defined.html" rel="prev" title="defined">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="else"></span><div class="header">
+<p>
+Next: <a href="elif.html" accesskey="n" rel="next">elif</a>, Previous: <a href="defined.html" accesskey="p" rel="prev">defined</a>, Up: <a href="Conditional-Syntax.html" accesskey="u" rel="up">Conditional Syntax</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>
+</div>
+<hr>
+<span id="The-_0023else-directive"></span><h4 class="subsubsection">26.6.2.4 The <code>#else</code> directive</h4>
+
+<span id="index-_0023else"></span>
+<p>The <code>#else</code> directive can be added to a conditional to provide
+alternative text to be used if the condition fails.  This is what it
+looks like:
+</p>
+<div class="example">
+<pre class="example">#if <var>expression</var>
+<var>text-if-true</var>
+#else /* Not <var>expression</var> */
+<var>text-if-false</var>
+#endif /* Not <var>expression</var> */
+</pre></div>
+
+<p>If <var>expression</var> is nonzero, the <var>text-if-true</var> is included and
+the <var>text-if-false</var> is skipped.  If <var>expression</var> is zero, the
+opposite happens.
+</p>
+<p>You can use <code>#else</code> with <code>#ifdef</code> and <code>#ifndef</code>, too.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/fetestexcept.html
===================================================================
--- public/doc/gnu-c/fetestexcept.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/fetestexcept.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,56 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<!-- This file redirects to the location of a node or anchor -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>fetestexcept (GNU C Language Manual)</title>
+
+<meta name="description" content="fetestexcept (GNU C Language Manual)">
+<meta name="keywords" content="fetestexcept (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+<meta http-equiv="Refresh" content="0; url=Exception-Flags.html#fetestexcept">
+
+</head>
+
+<body lang="en">
+
+<p>The node you are looking for is at <a href="Exception-Flags.html#fetestexcept">fetestexcept</a>.</p>
+</body>
Index: public/doc/gnu-c/for-Statement.html
===================================================================
--- public/doc/gnu-c/for-Statement.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/for-Statement.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,94 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>for Statement (GNU C Language Manual)</title>
+
+<meta name="description" content="for Statement (GNU C Language Manual)">
+<meta name="keywords" content="for Statement (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Loop-Statements.html" rel="up" title="Loop Statements">
+<link href="Example-of-for.html" rel="next" title="Example of for">
+<link href="break-Statement.html" rel="prev" title="break Statement">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="for-Statement"></span><div class="header">
+<p>
+Next: <a href="Example-of-for.html" accesskey="n" rel="next">Example of for</a>, Previous: <a href="break-Statement.html" accesskey="p" rel="prev">break Statement</a>, Up: <a href="Loop-Statements.html" accesskey="u" rel="up">Loop Statements</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>
+</div>
+<hr>
+<span id="for-Statement-1"></span><h4 class="subsection">19.6.4 <code>for</code> Statement</h4>
+<span id="index-for-statement"></span>
+<span id="index-statement_002c-for"></span>
+<span id="index-for"></span>
+
+<p>A <code>for</code> statement uses three expressions written inside a
+parenthetical group to define the repetition of the loop.  The first
+expression says how to prepare to start the loop.  The second says how
+to test, before each iteration, whether to continue looping.  The
+third says how to advance, at the end of an iteration, for the next
+iteration.  All together, it looks like this:
+</p>
+<div class="example">
+<pre class="example">for (<var>start</var>; <var>continue-test</var>; <var>advance</var>)
+  <var>body</var>
+</pre></div>
+
+<p>The first thing the <code>for</code> statement does is compute <var>start</var>.
+The next thing it does is compute the expression <var>continue-test</var>.
+If that expression is false (zero), the <code>for</code> statement finishes
+immediately, so <var>body</var> is executed zero times.
+</p>
+<p>However, if <var>continue-test</var> is true (nonzero), the <code>for</code>
+statement executes <var>body</var>, then <var>advance</var>.  Then it loops back
+to the not-quite-top to test <var>continue-test</var> again.  But it does
+not compute <var>start</var> again.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/for_002dIndex-Declarations.html
===================================================================
--- public/doc/gnu-c/for_002dIndex-Declarations.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/for_002dIndex-Declarations.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,104 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>for-Index Declarations (GNU C Language Manual)</title>
+
+<meta name="description" content="for-Index Declarations (GNU C Language Manual)">
+<meta name="keywords" content="for-Index Declarations (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Loop-Statements.html" rel="up" title="Loop Statements">
+<link href="continue-Statement.html" rel="next" title="continue Statement">
+<link href="Omitted-for_002dExpressions.html" rel="prev" title="Omitted for-Expressions">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="for_002dIndex-Declarations"></span><div class="header">
+<p>
+Next: <a href="continue-Statement.html" accesskey="n" rel="next">continue Statement</a>, Previous: <a href="Omitted-for_002dExpressions.html" accesskey="p" rel="prev">Omitted for-Expressions</a>, Up: <a href="Loop-Statements.html" accesskey="u" rel="up">Loop Statements</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>
+</div>
+<hr>
+<span id="for_002dIndex-Declarations-1"></span><h4 class="subsection">19.6.7 <code>for</code>-Index Declarations</h4>
+
+<p>You can declare loop-index variables directly in the <var>start</var>
+portion of the <code>for</code>-loop, like this:
+</p>
+<div class="example">
+<pre class="example">for (int i = 0; i &lt; n; ++i)
+  {
+    <span class="roman">&hellip;</span>
+  }
+</pre></div>
+
+<p>This kind of <var>start</var> is limited to a single declaration; it can
+declare one or more variables, separated by commas, all of which are
+the same <var>basetype</var> (<code>int</code>, in this example):
+</p>
+<div class="example">
+<pre class="example">for (int i = 0, j = 1, *p = NULL; i &lt; n; ++i, ++j, ++p)
+  {
+    <span class="roman">&hellip;</span>
+  }
+</pre></div>
+
+<p>The scope of these variables is the <code>for</code> statement as a whole.
+See <a href="Variable-Declarations.html">Variable Declarations</a> for a explanation of <var>basetype</var>.
+</p>
+<p>Variables declared in <code>for</code> statements should have initializers.
+Omitting the initialization gives the variables unpredictable initial
+values, so this code is erroneous.
+</p>
+<div class="example">
+<pre class="example">for (int i; i &lt; n; ++i)
+  {
+    <span class="roman">&hellip;</span>
+  }
+</pre></div>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/goto-Statement.html
===================================================================
--- public/doc/gnu-c/goto-Statement.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/goto-Statement.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,217 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>goto Statement (GNU C Language Manual)</title>
+
+<meta name="description" content="goto Statement (GNU C Language Manual)">
+<meta name="keywords" content="goto Statement (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Statements.html" rel="up" title="Statements">
+<link href="Local-Labels.html" rel="next" title="Local Labels">
+<link href="Null-Statement.html" rel="prev" title="Null Statement">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="goto-Statement"></span><div class="header">
+<p>
+Next: <a href="Local-Labels.html" accesskey="n" rel="next">Local Labels</a>, Previous: <a href="Null-Statement.html" accesskey="p" rel="prev">Null Statement</a>, Up: <a href="Statements.html" accesskey="u" rel="up">Statements</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>
+</div>
+<hr>
+<span id="goto-Statement-and-Labels"></span><h3 class="section">19.12 <code>goto</code> Statement and Labels</h3>
+<span id="index-goto-statement"></span>
+<span id="index-statement_002c-goto"></span>
+<span id="index-label"></span>
+<span id="index-goto"></span>
+
+<p>The <code>goto</code> statement looks like this:
+</p>
+<div class="example">
+<pre class="example">goto <var>label</var>;
+</pre></div>
+
+<p>Its effect is to transfer control immediately to another part of the
+current function&mdash;where the label named <var>label</var> is defined.
+</p>
+<p>An ordinary label definition looks like this:
+</p>
+<div class="example">
+<pre class="example"><var>label</var>:
+</pre></div>
+
+<p>and it can appear before any statement.  You can&rsquo;t use <code>default</code>
+as a label, since that has a special meaning for <code>switch</code>
+statements.
+</p>
+<p>An ordinary label doesn&rsquo;t need a separate declaration; defining it is
+enough.
+</p>
+<p>Here&rsquo;s an example of using <code>goto</code> to implement a loop
+equivalent to <code>do</code>&ndash;<code>while</code>:
+</p>
+<div class="example">
+<pre class="example">{
+ loop_restart:
+  <var>body</var>
+  if (<var>condition</var>)
+    goto loop_restart;
+}
+</pre></div>
+
+<p>The name space of labels is separate from that of variables and functions.
+Thus, there is no error in using a single name in both ways:
+</p>
+<div class="example">
+<pre class="example">{
+  int foo;    // <span class="roman">Variable <code>foo</code>.</span>
+ foo:         // <span class="roman">Label <code>foo</code>.</span>
+  <var>body</var>
+  if (foo &gt; 0)  // <span class="roman">Variable <code>foo</code>.</span>
+    goto foo;   // <span class="roman">Label <code>foo</code>.</span>
+}
+</pre></div>
+
+<p>Blocks have no effect on ordinary labels; each label name is defined
+throughout the whole of the function it appears in.  It looks strange to
+jump into a block with <code>goto</code>, but it works.  For example,
+</p>
+<div class="example">
+<pre class="example">if (x &lt; 0)
+  goto negative;
+if (y &lt; 0)
+  {
+   negative:
+    printf (&quot;Negative\n&quot;);
+    return;
+  }
+</pre></div>
+
+<p>If the goto jumps into the scope of a variable, it does not
+initialize the variable.  For example, if <code>x</code> is negative,
+</p>
+<div class="example">
+<pre class="example">if (x &lt; 0)
+  goto negative;
+if (y &lt; 0)
+  {
+    int i = 5;
+   negative:
+    printf (&quot;Negative, and i is %d\n&quot;, i);
+    return;
+  }
+</pre></div>
+
+<p>prints junk because <code>i</code> was not initialized.
+</p>
+<p>If the block declares a variable-length automatic array, jumping into
+it gives a compilation error.  However, jumping out of the scope of a
+variable-length array works fine, and deallocates its storage.
+</p>
+<p>A label can&rsquo;t come directly before a declaration, so the code can&rsquo;t
+jump directly to one.  For example, this is not allowed:
+</p>
+<div class="example">
+<pre class="example">{
+  goto foo;
+foo:
+  int x = 5;
+  bar(&amp;x);
+}
+</pre></div>
+
+<p>The workaround is to add a statement, even an empty statement,
+directly after the label.  For example:
+</p>
+<div class="example">
+<pre class="example">{
+  goto foo;
+foo:
+  ;
+  int x = 5;
+  bar(&amp;x);
+}
+</pre></div>
+
+<p>Likewise, a label can&rsquo;t be the last thing in a block.  The workaround
+solution is the same: add a semicolon after the label.
+</p>
+<p>These unnecessary restrictions on labels make no sense, and ought in
+principle to be removed; but they do only a little harm since labels
+and <code>goto</code> are rarely the best way to write a program.
+</p>
+<p>These examples are all artificial; it would be more natural to
+write them in other ways, without <code>goto</code>.  For instance,
+the clean way to write the example that prints &lsquo;<samp>Negative</samp>&rsquo; is this:
+</p>
+<div class="example">
+<pre class="example">if (x &lt; 0 || y &lt; 0)
+  {
+    printf (&quot;Negative\n&quot;);
+    return;
+  }
+</pre></div>
+
+<p>It is hard to construct simple examples where <code>goto</code> is actually
+the best way to write a program.  Its rare good uses tend to be in
+complex code, thus not apt for the purpose of explaining the meaning
+of <code>goto</code>.
+</p>
+<p>The only good time to use <code>goto</code> is when it makes the code
+simpler than any alternative.  Jumping backward is rarely desirable,
+because usually the other looping and control constructs give simpler
+code.  Using <code>goto</code> to jump forward is more often desirable, for
+instance when a function needs to do some processing in an error case
+and errors can occur at various different places within the function.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Local-Labels.html" accesskey="n" rel="next">Local Labels</a>, Previous: <a href="Null-Statement.html" accesskey="p" rel="prev">Null Statement</a>, Up: <a href="Statements.html" accesskey="u" rel="up">Statements</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/if-Statement.html
===================================================================
--- public/doc/gnu-c/if-Statement.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/if-Statement.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,92 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>if Statement (GNU C Language Manual)</title>
+
+<meta name="description" content="if Statement (GNU C Language Manual)">
+<meta name="keywords" content="if Statement (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Statements.html" rel="up" title="Statements">
+<link href="if_002delse-Statement.html" rel="next" title="if-else Statement">
+<link href="Expression-Statement.html" rel="prev" title="Expression Statement">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="if-Statement"></span><div class="header">
+<p>
+Next: <a href="if_002delse-Statement.html" accesskey="n" rel="next">if-else Statement</a>, Previous: <a href="Expression-Statement.html" accesskey="p" rel="prev">Expression Statement</a>, Up: <a href="Statements.html" accesskey="u" rel="up">Statements</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>
+</div>
+<hr>
+<span id="if-Statement-1"></span><h3 class="section">19.2 <code>if</code> Statement</h3>
+<span id="index-if-statement"></span>
+<span id="index-statement_002c-if"></span>
+<span id="index-if"></span>
+
+<p>An <code>if</code> statement computes an expression to decide
+whether to execute the following statement or not.
+It looks like this:
+</p>
+<div class="example">
+<pre class="example">if (<var>condition</var>)
+  <var>execute-if-true</var>
+</pre></div>
+
+<p>The first thing this does is compute the value of <var>condition</var>.  If
+that is true (nonzero), then it executes the statement
+<var>execute-if-true</var>.  If the value of <var>condition</var> is false
+(zero), it doesn&rsquo;t execute <var>execute-if-true</var>; instead, it does
+nothing.
+</p>
+<p>This is a <em>complex statement</em> because it contains a component
+<var>if-true-substatement</var> that is a nested statement.  It must be one
+and only one statement.  The way to put multiple statements there is
+to group them into a <em>block</em> (see <a href="Blocks.html">Blocks</a>).
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/if.html
===================================================================
--- public/doc/gnu-c/if.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/if.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,132 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>if (GNU C Language Manual)</title>
+
+<meta name="description" content="if (GNU C Language Manual)">
+<meta name="keywords" content="if (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Conditional-Syntax.html" rel="up" title="Conditional Syntax">
+<link href="defined.html" rel="next" title="defined">
+<link href="ifdef.html" rel="prev" title="ifdef">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="if"></span><div class="header">
+<p>
+Next: <a href="defined.html" accesskey="n" rel="next">defined</a>, Previous: <a href="ifdef.html" accesskey="p" rel="prev">ifdef</a>, Up: <a href="Conditional-Syntax.html" accesskey="u" rel="up">Conditional Syntax</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>
+</div>
+<hr>
+<span id="The-_0023if-directive"></span><h4 class="subsubsection">26.6.2.2 The <code>#if</code> directive</h4>
+
+<p>The <code>#if</code> directive allows you to test the value of an integer arithmetic
+expression, rather than the mere existence of one macro.  Its syntax is
+</p>
+<div class="example">
+<pre class="example">#if <var>expression</var>
+
+<var>controlled text</var>
+
+#endif /* <var>expression</var> */
+</pre></div>
+
+<p><var>expression</var> is a C expression of integer type, subject to
+stringent restrictions so its value can be computed at compile time.
+It may contain
+</p>
+<ul>
+<li> Integer constants.
+
+</li><li> Character constants, which are interpreted as they would be in normal
+code.
+
+</li><li> Arithmetic operators for addition, subtraction, multiplication,
+division, bitwise operations, shifts, comparisons, and logical
+operations (<code>&amp;&amp;</code> and <code>||</code>).  The latter two obey the usual
+short-circuiting rules of standard C.
+
+</li><li> Macros.  All macros in the expression are expanded before actual
+computation of the expression&rsquo;s value begins.
+
+</li><li> Uses of the <code>defined</code> operator, which lets you check whether macros
+are defined in the middle of an <code>#if</code>.
+
+</li><li> Identifiers that are not macros, which are all considered to be the
+number zero.  This allows you to write <code>#if&nbsp;MACRO<!-- /@w --></code> instead of
+<code>#ifdef&nbsp;MACRO<!-- /@w --></code>, if you know that MACRO, when defined, will
+always have a nonzero value.  Function-like macros used without their
+function call parentheses are also treated as zero.
+
+<p>In some contexts this shortcut is undesirable.  The <samp>-Wundef</samp>
+requests warnings for any identifier in an <code>#if</code> that is not
+defined as a macro.
+</p></li></ul>
+
+<p>Preprocessing does not know anything about the data types of C.
+Therefore, <code>sizeof</code> operators are not recognized in <code>#if</code>;
+<code>sizeof</code> is simply an identifier, and if it is not a macro, it
+stands for zero.  This is likely to make the expression invalid.
+Preprocessing does not recognize <code>enum</code> constants; they too are
+simply identifiers, so if they are not macros, they stand for zero.
+</p>
+<p>Preprocessing calculates the value of <var>expression</var>, and carries
+out all calculations in the widest integer type known to the compiler;
+on most machines supported by GNU C this is 64 bits.  This is not the
+same rule as the compiler uses to calculate the value of a constant
+expression, and may give different results in some cases.  If the
+value comes out to be nonzero, the <code>#if</code> succeeds and the
+<var>controlled text</var> is compiled; otherwise it is skipped.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="defined.html" accesskey="n" rel="next">defined</a>, Previous: <a href="ifdef.html" accesskey="p" rel="prev">ifdef</a>, Up: <a href="Conditional-Syntax.html" accesskey="u" rel="up">Conditional Syntax</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/if_002delse-Statement.html
===================================================================
--- public/doc/gnu-c/if_002delse-Statement.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/if_002delse-Statement.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,94 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>if-else Statement (GNU C Language Manual)</title>
+
+<meta name="description" content="if-else Statement (GNU C Language Manual)">
+<meta name="keywords" content="if-else Statement (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Statements.html" rel="up" title="Statements">
+<link href="Blocks.html" rel="next" title="Blocks">
+<link href="if-Statement.html" rel="prev" title="if Statement">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="if_002delse-Statement"></span><div class="header">
+<p>
+Next: <a href="Blocks.html" accesskey="n" rel="next">Blocks</a>, Previous: <a href="if-Statement.html" accesskey="p" rel="prev">if Statement</a>, Up: <a href="Statements.html" accesskey="u" rel="up">Statements</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>
+</div>
+<hr>
+<span id="if_002delse-Statement-1"></span><h3 class="section">19.3 <code>if-else</code> Statement</h3>
+<span id="index-if_2026else-statement"></span>
+<span id="index-statement_002c-if_2026else"></span>
+<span id="index-else"></span>
+
+<p>An <code>if</code>-<code>else</code> statement computes an expression to decide
+which of two nested statements to execute.
+It looks like this:
+</p>
+<div class="example">
+<pre class="example">if (<var>condition</var>)
+  <var>if-true-substatement</var>
+else
+  <var>if-false-substatement</var>
+</pre></div>
+
+<p>The first thing this does is compute the value of <var>condition</var>.  If
+that is true (nonzero), then it executes the statement
+<var>if-true-substatement</var>.  If the value of <var>condition</var> is false
+(zero), then it executes the statement <var>if-false-substatement</var> instead.
+</p>
+<p>This is a <em>complex statement</em> because it contains components
+<var>if-true-substatement</var> and <var>if-else-substatement</var> that are
+nested statements.  Each must be one and only one statement.  The way
+to put multiple statements in such a component is to group them into a
+<em>block</em> (see <a href="Blocks.html">Blocks</a>).
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/ifdef.html
===================================================================
--- public/doc/gnu-c/ifdef.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/ifdef.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,149 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>ifdef (GNU C Language Manual)</title>
+
+<meta name="description" content="ifdef (GNU C Language Manual)">
+<meta name="keywords" content="ifdef (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Conditional-Syntax.html" rel="up" title="Conditional Syntax">
+<link href="if.html" rel="next" title="if">
+<link href="Conditional-Syntax.html" rel="prev" title="Conditional Syntax">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="ifdef"></span><div class="header">
+<p>
+Next: <a href="if.html" accesskey="n" rel="next">if</a>, Up: <a href="Conditional-Syntax.html" accesskey="u" rel="up">Conditional Syntax</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>
+</div>
+<hr>
+<span id="The-_0023ifdef-directive"></span><h4 class="subsubsection">26.6.2.1 The <code>#ifdef</code> directive</h4>
+<span id="index-_0023ifdef"></span>
+<span id="index-_0023endif"></span>
+
+<p>The simplest sort of conditional is
+</p>
+<div class="example">
+<pre class="example">#ifdef <var>MACRO</var>
+
+<var>controlled text</var>
+
+#endif /* <var>MACRO</var> */
+</pre></div>
+
+<span id="index-conditional-group"></span>
+<p>This block is called a <em>conditional group</em>.  The body,
+<var>controlled text</var>, will be included in compilation if
+and only if <var>MACRO</var> is defined.  We say that the conditional
+<em>succeeds</em> if <var>MACRO</var> is defined, <em>fails</em> if it is not.
+</p>
+<p>The <var>controlled text</var> inside a conditional can include
+preprocessing directives.  They are executed only if the conditional
+succeeds.  You can nest conditional groups inside other conditional
+groups, but they must be completely nested.  In other words,
+<code>#endif</code> always matches the nearest <code>#ifdef</code> (or
+<code>#ifndef</code>, or <code>#if</code>).  Also, you cannot start a conditional
+group in one file and end it in another.
+</p>
+<p>Even if a conditional fails, the <var>controlled text</var> inside it is
+still run through initial transformations and tokenization.  Therefore,
+it must all be lexically valid C.  Normally the only way this matters is
+that all comments and string literals inside a failing conditional group
+must still be properly ended.
+</p>
+<p>The comment following the <code>#endif</code> is not required, but it is a
+good practice if there is a lot of <var>controlled text</var>, because it
+helps people match the <code>#endif</code> to the corresponding <code>#ifdef</code>.
+</p>
+<p>Older programs sometimes put <var>macro</var> directly after the
+<code>#endif</code> without enclosing it in a comment.  This is invalid code
+according to the C standard, but it only causes a warning in GNU C.
+It never affects which <code>#ifndef</code> the <code>#endif</code> matches.
+</p>
+<span id="index-_0023ifndef"></span>
+<p>Sometimes you wish to use some code if a macro is <em>not</em> defined.
+You can do this by writing <code>#ifndef</code> instead of <code>#ifdef</code>.
+One common use of <code>#ifndef</code> is to include code only the first
+time a header file is included.  See <a href="Once_002dOnly-Headers.html">Once-Only Headers</a>.
+</p>
+<p>Macro definitions can vary between compilations for several reasons.
+Here are some samples.
+</p>
+<ul>
+<li> Some macros are predefined on each kind of machine
+(see <a href="https://gcc.gnu.org/onlinedocs/gcc/System_002dspecific-Predefined-Macros.html#System_002dspecific-Predefined-Macros">System-specific Predefined Macros</a> in <cite>Using the GNU Compiler
+Collection</cite>).  This allows you to provide code specially tuned for a
+particular machine.
+
+</li><li> System header files define more macros, associated with the features
+they implement.  You can test these macros with conditionals to avoid
+using a system feature on a machine where it is not implemented.
+
+</li><li> Macros can be defined or undefined with the <samp>-D</samp> and <samp>-U</samp>
+command-line options when you compile the program.  You can arrange to
+compile the same source file into two different programs by choosing a
+macro name to specify which program you want, writing conditionals to
+test whether or how this macro is defined, and then controlling the
+state of the macro with command-line options, perhaps set in the
+file <samp>Makefile</samp>.  See <a href="https://gcc.gnu.org/onlinedocs/gcc/Invocation.html#Invocation">Invoking GCC</a> in <cite>Using the GNU Compiler Collection</cite>.
+
+</li><li> Your program might have a special header file (often called
+<samp>config.h</samp>) that is adjusted when the program is compiled.  It can
+define or not define macros depending on the features of the system and
+the desired capabilities of the program.  The adjustment can be
+automated by a tool such as <code>autoconf</code>, or done by hand.
+</li></ul>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="if.html" accesskey="n" rel="next">if</a>, Up: <a href="Conditional-Syntax.html" accesskey="u" rel="up">Conditional Syntax</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/include-Operation.html
===================================================================
--- public/doc/gnu-c/include-Operation.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/include-Operation.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,130 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>include Operation (GNU C Language Manual)</title>
+
+<meta name="description" content="include Operation (GNU C Language Manual)">
+<meta name="keywords" content="include Operation (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Header-Files.html" rel="up" title="Header Files">
+<link href="Search-Path.html" rel="next" title="Search Path">
+<link href="include-Syntax.html" rel="prev" title="include Syntax">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="include-Operation"></span><div class="header">
+<p>
+Next: <a href="Search-Path.html" accesskey="n" rel="next">Search Path</a>, Previous: <a href="include-Syntax.html" accesskey="p" rel="prev">include Syntax</a>, Up: <a href="Header-Files.html" accesskey="u" rel="up">Header Files</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>
+</div>
+<hr>
+<span id="g_t_0023include-Operation"></span><h4 class="subsection">26.4.2 <code>#include</code> Operation</h4>
+
+<p>The <code>#include</code> directive works by scanning the specified header
+file as input before continuing with the rest of the current file.
+The result of preprocessing consists of the text already generated,
+followed by the result of preprocessing the included file, followed by
+whatever results from the text after the <code>#include</code> directive.
+For example, if you have a header file <samp>header.h</samp> as follows,
+</p>
+<div class="example">
+<pre class="example">char *test (void);
+</pre></div>
+
+<p>and a main program called <samp>program.c</samp> that uses the header file,
+like this,
+</p>
+<div class="example">
+<pre class="example">int x;
+#include &quot;header.h&quot;
+
+int
+main (void)
+{
+  puts (test ());
+}
+</pre></div>
+
+<p>the result is equivalent to putting this text in <samp>program.c</samp>:
+</p>
+<div class="example">
+<pre class="example">int x;
+char *test (void);
+
+int
+main (void)
+{
+  puts (test ());
+}
+</pre></div>
+
+<p>Included files are not limited to declarations and macro definitions;
+those are merely the typical uses.  Any fragment of a C program can be
+included from another file.  The include file could even contain the
+beginning of a statement that is concluded in the containing file, or
+the end of a statement that was started in the including file.  However,
+an included file must consist of complete tokens.  Comments and string
+literals that have not been closed by the end of an included file are
+invalid.  For error recovery, the compiler terminates them at the end of
+the file.
+</p>
+<p>To avoid confusion, it is best if header files contain only complete
+syntactic units&mdash;function declarations or definitions, type
+declarations, etc.
+</p>
+<p>The line following the <code>#include</code> directive is always treated as
+a separate line, even if the included file lacks a final newline.
+There is no problem putting a preprocessing directive there.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Search-Path.html" accesskey="n" rel="next">Search Path</a>, Previous: <a href="include-Syntax.html" accesskey="p" rel="prev">include Syntax</a>, Up: <a href="Header-Files.html" accesskey="u" rel="up">Header Files</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/include-Syntax.html
===================================================================
--- public/doc/gnu-c/include-Syntax.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/include-Syntax.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,115 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>include Syntax (GNU C Language Manual)</title>
+
+<meta name="description" content="include Syntax (GNU C Language Manual)">
+<meta name="keywords" content="include Syntax (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Header-Files.html" rel="up" title="Header Files">
+<link href="include-Operation.html" rel="next" title="include Operation">
+<link href="Header-Files.html" rel="prev" title="Header Files">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="include-Syntax"></span><div class="header">
+<p>
+Next: <a href="include-Operation.html" accesskey="n" rel="next">include Operation</a>, Up: <a href="Header-Files.html" accesskey="u" rel="up">Header Files</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>
+</div>
+<hr>
+<span id="g_t_0023include-Syntax"></span><h4 class="subsection">26.4.1 <code>#include</code> Syntax</h4>
+
+<span id="index-_0023include"></span>
+<p>You can specify inclusion of user and system header files with the
+preprocessing directive <code>#include</code>.  It has two variants:
+</p>
+<dl compact="compact">
+<dt><code>#include &lt;<var>file</var>&gt;</code></dt>
+<dd><p>This variant is used for system header files.  It searches for a file
+named <var>file</var> in a standard list of system directories.  You can
+prepend directories to this list with the <samp>-I</samp> option
+(see <a href="https://gcc.gnu.org/onlinedocs/gcc/Invocation.html#Invocation">Invoking GCC</a> in <cite>Using the GNU
+Compiler Collection</cite>).
+</p>
+</dd>
+<dt><code>#include &quot;<var>file</var>&quot;</code></dt>
+<dd><p>This variant is used for header files of your own program.  It
+searches for a file named <var>file</var> first in the directory containing
+the current file, then in the quote directories, then the same
+directories used for <code>&lt;<var>file</var>&gt;</code>.  You can prepend directories
+to the list of quote directories with the <samp>-iquote</samp> option.
+</p></dd>
+</dl>
+
+<p>The argument of <code>#include</code>, whether delimited with quote marks or
+angle brackets, behaves like a string constant in that comments are not
+recognized, and macro names are not expanded.  Thus, <code>#include&nbsp;&lt;x/*y&gt;<!-- /@w --></code> specifies inclusion of a system header file named <samp>x/*y</samp>.
+</p>
+<p>However, if backslashes occur within <var>file</var>, they are considered
+ordinary text characters, not escape characters: character escape
+sequences such as used in string constants in C are not meaningful
+here.  Thus, <code>#include&nbsp;&quot;x\n\\y&quot;<!-- /@w --></code> specifies a filename
+containing three backslashes.  By the same token, there is no way to
+escape &lsquo;<samp>&quot;</samp>&rsquo; or &lsquo;<samp>&gt;</samp>&rsquo; to include it in the header file name if
+it would instead end the file name.
+</p>
+<p>Some systems interpret &lsquo;<samp>\</samp>&rsquo; as a file name component separator.
+All these systems also interpret &lsquo;<samp>/</samp>&rsquo; the same way.  It is most
+portable to use only &lsquo;<samp>/</samp>&rsquo;.
+</p>
+<p>It is an error to put anything other than comments on the
+<code>#include</code> line after the file name.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="include-Operation.html" accesskey="n" rel="next">include Operation</a>, Up: <a href="Header-Files.html" accesskey="u" rel="up">Header Files</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/index.html
===================================================================
--- public/doc/gnu-c/index.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/index.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,1161 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Top (GNU C Language Manual)</title>
+
+<meta name="description" content="Top (GNU C Language Manual)">
+<meta name="keywords" content="Top (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="#Top" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="The-First-Example.html" rel="next" title="The First Example">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+  <h1 class="settitle" align="center">GNU C Language Manual</h1>
+  <p align="center">Also available in <a href="c.pdf">PDF</a></p>
+
+
+
+
+
+
+<span id="SEC_Overview"></span>
+<h2 class="shortcontents-heading">Short Table of Contents</h2>
+
+<div class="shortcontents">
+<ul class="no-bullet">
+<li><a id="stoc-The-First-Example-1" href="#toc-The-First-Example-1">1 The First Example</a></li>
+<li><a id="stoc-A-Complete-Program" href="#toc-A-Complete-Program">2 A Complete Program</a></li>
+<li><a id="stoc-Storage-and-Data" href="#toc-Storage-and-Data">3 Storage and Data</a></li>
+<li><a id="stoc-Beyond-Integers-1" href="#toc-Beyond-Integers-1">4 Beyond Integers</a></li>
+<li><a id="stoc-Lexical-Syntax-1" href="#toc-Lexical-Syntax-1">5 Lexical Syntax</a></li>
+<li><a id="stoc-Arithmetic-1" href="#toc-Arithmetic-1">6 Arithmetic</a></li>
+<li><a id="stoc-Assignment-Expressions-1" href="#toc-Assignment-Expressions-1">7 Assignment Expressions</a></li>
+<li><a id="stoc-Execution-Control-Expressions-1" href="#toc-Execution-Control-Expressions-1">8 Execution Control Expressions</a></li>
+<li><a id="stoc-Binary-Operator-Grammar-1" href="#toc-Binary-Operator-Grammar-1">9 Binary Operator Grammar</a></li>
+<li><a id="stoc-Order-of-Execution-1" href="#toc-Order-of-Execution-1">10 Order of Execution</a></li>
+<li><a id="stoc-Primitive-Data-Types" href="#toc-Primitive-Data-Types">11 Primitive Data Types</a></li>
+<li><a id="stoc-Constants-1" href="#toc-Constants-1">12 Constants</a></li>
+<li><a id="stoc-Type-Size-1" href="#toc-Type-Size-1">13 Type Size</a></li>
+<li><a id="stoc-Pointers-1" href="#toc-Pointers-1">14 Pointers</a></li>
+<li><a id="stoc-Structures-1" href="#toc-Structures-1">15 Structures</a></li>
+<li><a id="stoc-Arrays-1" href="#toc-Arrays-1">16 Arrays</a></li>
+<li><a id="stoc-Enumeration-Types-1" href="#toc-Enumeration-Types-1">17 Enumeration Types</a></li>
+<li><a id="stoc-Defining-Typedef-Names-1" href="#toc-Defining-Typedef-Names-1">18 Defining Typedef Names</a></li>
+<li><a id="stoc-Statements-1" href="#toc-Statements-1">19 Statements</a></li>
+<li><a id="stoc-Variables-1" href="#toc-Variables-1">20 Variables</a></li>
+<li><a id="stoc-Type-Qualifiers-1" href="#toc-Type-Qualifiers-1">21 Type Qualifiers</a></li>
+<li><a id="stoc-Functions-1" href="#toc-Functions-1">22 Functions</a></li>
+<li><a id="stoc-Compatible-Types-1" href="#toc-Compatible-Types-1">23 Compatible Types</a></li>
+<li><a id="stoc-Type-Conversions-1" href="#toc-Type-Conversions-1">24 Type Conversions</a></li>
+<li><a id="stoc-Scope-1" href="#toc-Scope-1">25 Scope</a></li>
+<li><a id="stoc-Preprocessing-1" href="#toc-Preprocessing-1">26 Preprocessing</a></li>
+<li><a id="stoc-Integers-in-Depth-1" href="#toc-Integers-in-Depth-1">27 Integers in Depth</a></li>
+<li><a id="stoc-Floating-Point-in-Depth-1" href="#toc-Floating-Point-in-Depth-1">28 Floating Point in Depth</a></li>
+<li><a id="stoc-Compilation-1" href="#toc-Compilation-1">29 Compilation</a></li>
+<li><a id="stoc-Directing-Compilation-1" href="#toc-Directing-Compilation-1">30 Directing Compilation</a></li>
+<li><a id="stoc-Type-Alignment-1" href="#toc-Type-Alignment-1">Appendix A Type Alignment</a></li>
+<li><a id="stoc-Aliasing-1" href="#toc-Aliasing-1">Appendix B Aliasing</a></li>
+<li><a id="stoc-Digraphs-1" href="#toc-Digraphs-1">Appendix C Digraphs</a></li>
+<li><a id="stoc-Attributes-in-Declarations" href="#toc-Attributes-in-Declarations">Appendix D Attributes in Declarations</a></li>
+<li><a id="stoc-Signals-1" href="#toc-Signals-1">Appendix E Signals</a></li>
+<li><a id="stoc-GNU-Free-Documentation-License-1" href="#toc-GNU-Free-Documentation-License-1">Appendix F GNU Free Documentation License</a></li>
+<li><a id="stoc-Index-of-Symbols-and-Keywords" href="#toc-Index-of-Symbols-and-Keywords" rel="index">Index of Symbols and Keywords</a></li>
+<li><a id="stoc-Concept-Index-1" href="#toc-Concept-Index-1" rel="index">Concept Index</a></li>
+</ul>
+</div>
+
+<span id="SEC_Contents"></span>
+<h2 class="contents-heading">Table of Contents</h2>
+
+<div class="contents">
+
+<ul class="no-bullet">
+  <li><a id="toc-The-First-Example-1" href="The-First-Example.html#The-First-Example">1 The First Example</a>
+  <ul class="no-bullet">
+    <li><a id="toc-Example_003a-Recursive-Fibonacci" href="Recursive-Fibonacci.html#Recursive-Fibonacci">1.1 Example: Recursive Fibonacci</a>
+    <ul class="no-bullet">
+      <li><a id="toc-Function-Header-1" href="Function-Header.html#Function-Header">1.1.1 Function Header</a></li>
+      <li><a id="toc-Function-Body-1" href="Function-Body.html#Function-Body">1.1.2 Function Body</a></li>
+    </ul></li>
+    <li><a id="toc-The-Stack_002c-And-Stack-Overflow" href="Stack.html#Stack">1.2 The Stack, And Stack Overflow</a></li>
+    <li><a id="toc-Example_003a-Iterative-Fibonacci" href="Iterative-Fibonacci.html#Iterative-Fibonacci">1.3 Example: Iterative Fibonacci</a></li>
+  </ul></li>
+  <li><a id="toc-A-Complete-Program" href="Complete-Program.html#Complete-Program">2 A Complete Program</a>
+  <ul class="no-bullet">
+    <li><a id="toc-Complete-Program-Example" href="Complete-Example.html#Complete-Example">2.1 Complete Program Example</a></li>
+    <li><a id="toc-Complete-Program-Explanation" href="Complete-Explanation.html#Complete-Explanation">2.2 Complete Program Explanation</a></li>
+    <li><a id="toc-Complete-Program_002c-Line-by-Line" href="Complete-Line_002dby_002dLine.html#Complete-Line_002dby_002dLine">2.3 Complete Program, Line by Line</a></li>
+    <li><a id="toc-Compiling-the-Example-Program" href="Compile-Example.html#Compile-Example">2.4 Compiling the Example Program</a></li>
+  </ul></li>
+  <li><a id="toc-Storage-and-Data" href="Storage.html#Storage">3 Storage and Data</a></li>
+  <li><a id="toc-Beyond-Integers-1" href="Beyond-Integers.html#Beyond-Integers">4 Beyond Integers</a>
+  <ul class="no-bullet">
+    <li><a id="toc-An-Example-with-Non_002dInteger-Numbers" href="Float-Example.html#Float-Example">4.1 An Example with Non-Integer Numbers</a></li>
+    <li><a id="toc-An-Example-with-Arrays" href="Array-Example.html#Array-Example">4.2 An Example with Arrays</a></li>
+    <li><a id="toc-Calling-the-Array-Example" href="Array-Example-Call.html#Array-Example-Call">4.3 Calling the Array Example</a></li>
+    <li><a id="toc-Variations-for-Array-Example" href="Array-Example-Variations.html#Array-Example-Variations">4.4 Variations for Array Example</a></li>
+  </ul></li>
+  <li><a id="toc-Lexical-Syntax-1" href="Lexical-Syntax.html#Lexical-Syntax">5 Lexical Syntax</a>
+  <ul class="no-bullet">
+    <li><a id="toc-Write-Programs-in-English_0021" href="English.html#English">5.1 Write Programs in English!</a></li>
+    <li><a id="toc-Characters-1" href="Characters.html#Characters">5.2 Characters</a></li>
+    <li><a id="toc-Whitespace-1" href="Whitespace.html#Whitespace">5.3 Whitespace</a></li>
+    <li><a id="toc-Comments-1" href="Comments.html#Comments">5.4 Comments</a></li>
+    <li><a id="toc-Identifiers-1" href="Identifiers.html#Identifiers">5.5 Identifiers</a></li>
+    <li><a id="toc-Operators-and-Punctuation" href="Operators_002fPunctuation.html#Operators_002fPunctuation">5.6 Operators and Punctuation</a></li>
+    <li><a id="toc-Line-Continuation-1" href="Line-Continuation.html#Line-Continuation">5.7 Line Continuation</a></li>
+  </ul></li>
+  <li><a id="toc-Arithmetic-1" href="Arithmetic.html#Arithmetic">6 Arithmetic</a>
+  <ul class="no-bullet">
+    <li><a id="toc-Basic-Arithmetic-1" href="Basic-Arithmetic.html#Basic-Arithmetic">6.1 Basic Arithmetic</a></li>
+    <li><a id="toc-Integer-Arithmetic-1" href="Integer-Arithmetic.html#Integer-Arithmetic">6.2 Integer Arithmetic</a></li>
+    <li><a id="toc-Integer-Overflow-1" href="Integer-Overflow.html#Integer-Overflow">6.3 Integer Overflow</a>
+    <ul class="no-bullet">
+      <li><a id="toc-Overflow-with-Unsigned-Integers" href="Unsigned-Overflow.html#Unsigned-Overflow">6.3.1 Overflow with Unsigned Integers</a></li>
+      <li><a id="toc-Overflow-with-Signed-Integers" href="Signed-Overflow.html#Signed-Overflow">6.3.2 Overflow with Signed Integers</a></li>
+    </ul></li>
+    <li><a id="toc-Mixed_002dMode-Arithmetic" href="Mixed-Mode.html#Mixed-Mode">6.4 Mixed-Mode Arithmetic</a></li>
+    <li><a id="toc-Division-and-Remainder-1" href="Division-and-Remainder.html#Division-and-Remainder">6.5 Division and Remainder</a></li>
+    <li><a id="toc-Numeric-Comparisons-1" href="Numeric-Comparisons.html#Numeric-Comparisons">6.6 Numeric Comparisons</a></li>
+    <li><a id="toc-Shift-Operations-1" href="Shift-Operations.html#Shift-Operations">6.7 Shift Operations</a>
+    <ul class="no-bullet">
+      <li><a id="toc-Shifting-Makes-New-Bits" href="Bits-Shifted-In.html#Bits-Shifted-In">6.7.1 Shifting Makes New Bits</a></li>
+      <li><a id="toc-Caveats-for-Shift-Operations" href="Shift-Caveats.html#Shift-Caveats">6.7.2 Caveats for Shift Operations</a></li>
+      <li><a id="toc-Shift-Hacks-1" href="Shift-Hacks.html#Shift-Hacks">6.7.3 Shift Hacks</a></li>
+    </ul></li>
+    <li><a id="toc-Bitwise-Operations-1" href="Bitwise-Operations.html#Bitwise-Operations">6.8 Bitwise Operations</a></li>
+  </ul></li>
+  <li><a id="toc-Assignment-Expressions-1" href="Assignment-Expressions.html#Assignment-Expressions">7 Assignment Expressions</a>
+  <ul class="no-bullet">
+    <li><a id="toc-Simple-Assignment-1" href="Simple-Assignment.html#Simple-Assignment">7.1 Simple Assignment</a></li>
+    <li><a id="toc-Lvalues-1" href="Lvalues.html#Lvalues">7.2 Lvalues</a></li>
+    <li><a id="toc-Modifying-Assignment-1" href="Modifying-Assignment.html#Modifying-Assignment">7.3 Modifying Assignment</a></li>
+    <li><a id="toc-Increment-and-Decrement-Operators" href="Increment_002fDecrement.html#Increment_002fDecrement">7.4 Increment and Decrement Operators</a></li>
+    <li><a id="toc-Postincrement-and-Postdecrement" href="Postincrement_002fPostdecrement.html#Postincrement_002fPostdecrement">7.5 Postincrement and Postdecrement</a></li>
+    <li><a id="toc-Pitfall_003a-Assignment-in-Subexpressions" href="Assignment-in-Subexpressions.html#Assignment-in-Subexpressions">7.6 Pitfall: Assignment in Subexpressions</a></li>
+    <li><a id="toc-Write-Assignments-in-Separate-Statements" href="Write-Assignments-Separately.html#Write-Assignments-Separately">7.7 Write Assignments in Separate Statements</a></li>
+  </ul></li>
+  <li><a id="toc-Execution-Control-Expressions-1" href="Execution-Control-Expressions.html#Execution-Control-Expressions">8 Execution Control Expressions</a>
+  <ul class="no-bullet">
+    <li><a id="toc-Logical-Operators-1" href="Logical-Operators.html#Logical-Operators">8.1 Logical Operators</a></li>
+    <li><a id="toc-Logical-Operators-and-Comparisons" href="Logicals-and-Comparison.html#Logicals-and-Comparison">8.2 Logical Operators and Comparisons</a></li>
+    <li><a id="toc-Logical-Operators-and-Assignments" href="Logicals-and-Assignments.html#Logicals-and-Assignments">8.3 Logical Operators and Assignments</a></li>
+    <li><a id="toc-Conditional-Expression-1" href="Conditional-Expression.html#Conditional-Expression">8.4 Conditional Expression</a>
+    <ul class="no-bullet">
+      <li><a id="toc-Rules-for-Conditional-Operator" href="Conditional-Rules.html#Conditional-Rules">8.4.1 Rules for Conditional Operator</a></li>
+      <li><a id="toc-Conditional-Operator-Branches" href="Conditional-Branches.html#Conditional-Branches">8.4.2 Conditional Operator Branches</a></li>
+    </ul></li>
+    <li><a id="toc-Comma-Operator-1" href="Comma-Operator.html#Comma-Operator">8.5 Comma Operator</a>
+    <ul class="no-bullet">
+      <li><a id="toc-The-Uses-of-the-Comma-Operator" href="Uses-of-Comma.html#Uses-of-Comma">8.5.1 The Uses of the Comma Operator</a></li>
+      <li><a id="toc-Clean-Use-of-the-Comma-Operator" href="Clean-Comma.html#Clean-Comma">8.5.2 Clean Use of the Comma Operator</a></li>
+      <li><a id="toc-When-Not-to-Use-the-Comma-Operator" href="Avoid-Comma.html#Avoid-Comma">8.5.3 When Not to Use the Comma Operator</a></li>
+    </ul></li>
+  </ul></li>
+  <li><a id="toc-Binary-Operator-Grammar-1" href="Binary-Operator-Grammar.html#Binary-Operator-Grammar">9 Binary Operator Grammar</a></li>
+  <li><a id="toc-Order-of-Execution-1" href="Order-of-Execution.html#Order-of-Execution">10 Order of Execution</a>
+  <ul class="no-bullet">
+    <li><a id="toc-Reordering-of-Operands-1" href="Reordering-of-Operands.html#Reordering-of-Operands">10.1 Reordering of Operands</a></li>
+    <li><a id="toc-Associativity-and-Ordering-1" href="Associativity-and-Ordering.html#Associativity-and-Ordering">10.2 Associativity and Ordering</a></li>
+    <li><a id="toc-Sequence-Points-1" href="Sequence-Points.html#Sequence-Points">10.3 Sequence Points</a></li>
+    <li><a id="toc-Postincrement-and-Ordering-1" href="Postincrement-and-Ordering.html#Postincrement-and-Ordering">10.4 Postincrement and Ordering</a></li>
+    <li><a id="toc-Ordering-of-Operands-1" href="Ordering-of-Operands.html#Ordering-of-Operands">10.5 Ordering of Operands</a></li>
+    <li><a id="toc-Optimization-and-Ordering-1" href="Optimization-and-Ordering.html#Optimization-and-Ordering">10.6 Optimization and Ordering</a></li>
+  </ul></li>
+  <li><a id="toc-Primitive-Data-Types" href="Primitive-Types.html#Primitive-Types">11 Primitive Data Types</a>
+  <ul class="no-bullet">
+    <li><a id="toc-Integer-Data-Types" href="Integer-Types.html#Integer-Types">11.1 Integer Data Types</a>
+    <ul class="no-bullet">
+      <li><a id="toc-Basic-Integers-1" href="Basic-Integers.html#Basic-Integers">11.1.1 Basic Integers</a></li>
+      <li><a id="toc-Signed-and-Unsigned-Types-1" href="Signed-and-Unsigned-Types.html#Signed-and-Unsigned-Types">11.1.2 Signed and Unsigned Types</a></li>
+      <li><a id="toc-Narrow-Integers-1" href="Narrow-Integers.html#Narrow-Integers">11.1.3 Narrow Integers</a></li>
+      <li><a id="toc-Conversion-among-Integer-Types" href="Integer-Conversion.html#Integer-Conversion">11.1.4 Conversion among Integer Types</a></li>
+      <li><a id="toc-Boolean-Type-1" href="Boolean-Type.html#Boolean-Type">11.1.5 Boolean Type</a></li>
+      <li><a id="toc-Integer-Variations-1" href="Integer-Variations.html#Integer-Variations">11.1.6 Integer Variations</a></li>
+    </ul></li>
+    <li><a id="toc-Floating_002dPoint-Data-Types-1" href="Floating_002dPoint-Data-Types.html#Floating_002dPoint-Data-Types">11.2 Floating-Point Data Types</a></li>
+    <li><a id="toc-Complex-Data-Types-1" href="Complex-Data-Types.html#Complex-Data-Types">11.3 Complex Data Types</a></li>
+    <li><a id="toc-The-Void-Type-1" href="The-Void-Type.html#The-Void-Type">11.4 The Void Type</a></li>
+    <li><a id="toc-Other-Data-Types-1" href="Other-Data-Types.html#Other-Data-Types">11.5 Other Data Types</a></li>
+    <li><a id="toc-Type-Designators-1" href="Type-Designators.html#Type-Designators">11.6 Type Designators</a></li>
+  </ul></li>
+  <li><a id="toc-Constants-1" href="Constants.html#Constants">12 Constants</a>
+  <ul class="no-bullet">
+    <li><a id="toc-Integer-Constants-1" href="Integer-Constants.html#Integer-Constants">12.1 Integer Constants</a></li>
+    <li><a id="toc-Integer-Constant-Data-Types" href="Integer-Const-Type.html#Integer-Const-Type">12.2 Integer Constant Data Types</a></li>
+    <li><a id="toc-Floating_002dPoint-Constants" href="Floating-Constants.html#Floating-Constants">12.3 Floating-Point Constants</a></li>
+    <li><a id="toc-Imaginary-Constants-1" href="Imaginary-Constants.html#Imaginary-Constants">12.4 Imaginary Constants</a></li>
+    <li><a id="toc-Invalid-Numbers-1" href="Invalid-Numbers.html#Invalid-Numbers">12.5 Invalid Numbers</a></li>
+    <li><a id="toc-Character-Constants-1" href="Character-Constants.html#Character-Constants">12.6 Character Constants</a></li>
+    <li><a id="toc-String-Constants-1" href="String-Constants.html#String-Constants">12.7 String Constants</a></li>
+    <li><a id="toc-UTF_002d8-String-Constants-1" href="UTF_002d8-String-Constants.html#UTF_002d8-String-Constants">12.8 UTF-8 String Constants</a></li>
+    <li><a id="toc-Unicode-Character-Codes-1" href="Unicode-Character-Codes.html#Unicode-Character-Codes">12.9 Unicode Character Codes</a></li>
+    <li><a id="toc-Wide-Character-Constants-1" href="Wide-Character-Constants.html#Wide-Character-Constants">12.10 Wide Character Constants</a></li>
+    <li><a id="toc-Wide-String-Constants-1" href="Wide-String-Constants.html#Wide-String-Constants">12.11 Wide String Constants</a></li>
+  </ul></li>
+  <li><a id="toc-Type-Size-1" href="Type-Size.html#Type-Size">13 Type Size</a></li>
+  <li><a id="toc-Pointers-1" href="Pointers.html#Pointers">14 Pointers</a>
+  <ul class="no-bullet">
+    <li><a id="toc-Address-of-Data-1" href="Address-of-Data.html#Address-of-Data">14.1 Address of Data</a></li>
+    <li><a id="toc-Pointer-Types-1" href="Pointer-Types.html#Pointer-Types">14.2 Pointer Types</a></li>
+    <li><a id="toc-Pointer_002dVariable-Declarations" href="Pointer-Declarations.html#Pointer-Declarations">14.3 Pointer-Variable Declarations</a></li>
+    <li><a id="toc-Pointer_002dType-Designators" href="Pointer-Type-Designators.html#Pointer-Type-Designators">14.4 Pointer-Type Designators</a></li>
+    <li><a id="toc-Dereferencing-Pointers" href="Pointer-Dereference.html#Pointer-Dereference">14.5 Dereferencing Pointers</a></li>
+    <li><a id="toc-Null-Pointers-1" href="Null-Pointers.html#Null-Pointers">14.6 Null Pointers</a></li>
+    <li><a id="toc-Dereferencing-Null-or-Invalid-Pointers" href="Invalid-Dereference.html#Invalid-Dereference">14.7 Dereferencing Null or Invalid Pointers</a></li>
+    <li><a id="toc-Void-Pointers-1" href="Void-Pointers.html#Void-Pointers">14.8 Void Pointers</a></li>
+    <li><a id="toc-Pointer-Comparison-1" href="Pointer-Comparison.html#Pointer-Comparison">14.9 Pointer Comparison</a></li>
+    <li><a id="toc-Pointer-Arithmetic-1" href="Pointer-Arithmetic.html#Pointer-Arithmetic">14.10 Pointer Arithmetic</a></li>
+    <li><a id="toc-Pointers-and-Arrays-1" href="Pointers-and-Arrays.html#Pointers-and-Arrays">14.11 Pointers and Arrays</a></li>
+    <li><a id="toc-Pointer-Arithmetic-at-Low-Level" href="Pointer-Arithmetic-Low-Level.html#Pointer-Arithmetic-Low-Level">14.12 Pointer Arithmetic at Low Level</a></li>
+    <li><a id="toc-Pointer-Increment-and-Decrement" href="Pointer-Increment_002fDecrement.html#Pointer-Increment_002fDecrement">14.13 Pointer Increment and Decrement</a></li>
+    <li><a id="toc-Drawbacks-of-Pointer-Arithmetic" href="Pointer-Arithmetic-Drawbacks.html#Pointer-Arithmetic-Drawbacks">14.14 Drawbacks of Pointer Arithmetic</a></li>
+    <li><a id="toc-Pointer_002dInteger-Conversion-1" href="Pointer_002dInteger-Conversion.html#Pointer_002dInteger-Conversion">14.15 Pointer-Integer Conversion</a></li>
+    <li><a id="toc-Printing-Pointers-1" href="Printing-Pointers.html#Printing-Pointers">14.16 Printing Pointers</a></li>
+  </ul></li>
+  <li><a id="toc-Structures-1" href="Structures.html#Structures">15 Structures</a>
+  <ul class="no-bullet">
+    <li><a id="toc-Referencing-Structure-Fields" href="Referencing-Fields.html#Referencing-Fields">15.1 Referencing Structure Fields</a></li>
+    <li><a id="toc-Dynamic-Memory-Allocation-1" href="Dynamic-Memory-Allocation.html#Dynamic-Memory-Allocation">15.2 Dynamic Memory Allocation</a></li>
+    <li><a id="toc-Field-Offset-1" href="Field-Offset.html#Field-Offset">15.3 Field Offset</a></li>
+    <li><a id="toc-Structure-Layout-1" href="Structure-Layout.html#Structure-Layout">15.4 Structure Layout</a></li>
+    <li><a id="toc-Packed-Structures-1" href="Packed-Structures.html#Packed-Structures">15.5 Packed Structures</a></li>
+    <li><a id="toc-Bit-Fields-1" href="Bit-Fields.html#Bit-Fields">15.6 Bit Fields</a></li>
+    <li><a id="toc-Bit-Field-Packing-1" href="Bit-Field-Packing.html#Bit-Field-Packing">15.7 Bit Field Packing</a></li>
+    <li><a id="toc-const-Fields-1" href="const-Fields.html#const-Fields">15.8 <code>const</code> Fields</a></li>
+    <li><a id="toc-Arrays-of-Length-Zero" href="Zero-Length.html#Zero-Length">15.9 Arrays of Length Zero</a></li>
+    <li><a id="toc-Flexible-Array-Fields-1" href="Flexible-Array-Fields.html#Flexible-Array-Fields">15.10 Flexible Array Fields</a></li>
+    <li><a id="toc-Overlaying-Different-Structures" href="Overlaying-Structures.html#Overlaying-Structures">15.11 Overlaying Different Structures</a></li>
+    <li><a id="toc-Structure-Assignment-1" href="Structure-Assignment.html#Structure-Assignment">15.12 Structure Assignment</a></li>
+    <li><a id="toc-Unions-1" href="Unions.html#Unions">15.13 Unions</a></li>
+    <li><a id="toc-Packing-With-Unions-1" href="Packing-With-Unions.html#Packing-With-Unions">15.14 Packing With Unions</a></li>
+    <li><a id="toc-Cast-to-a-Union-Type" href="Cast-to-Union.html#Cast-to-Union">15.15 Cast to a Union Type</a></li>
+    <li><a id="toc-Structure-Constructors-1" href="Structure-Constructors.html#Structure-Constructors">15.16 Structure Constructors</a></li>
+    <li><a id="toc-Unnamed-Types-as-Fields-1" href="Unnamed-Types-as-Fields.html#Unnamed-Types-as-Fields">15.17 Unnamed Types as Fields</a></li>
+    <li><a id="toc-Incomplete-Types-1" href="Incomplete-Types.html#Incomplete-Types">15.18 Incomplete Types</a></li>
+    <li><a id="toc-Intertwined-Incomplete-Types-1" href="Intertwined-Incomplete-Types.html#Intertwined-Incomplete-Types">15.19 Intertwined Incomplete Types</a></li>
+    <li><a id="toc-Type-Tags-1" href="Type-Tags.html#Type-Tags">15.20 Type Tags</a></li>
+  </ul></li>
+  <li><a id="toc-Arrays-1" href="Arrays.html#Arrays">16 Arrays</a>
+  <ul class="no-bullet">
+    <li><a id="toc-Accessing-Array-Elements-1" href="Accessing-Array-Elements.html#Accessing-Array-Elements">16.1 Accessing Array Elements</a></li>
+    <li><a id="toc-Declaring-an-Array-1" href="Declaring-an-Array.html#Declaring-an-Array">16.2 Declaring an Array</a></li>
+    <li><a id="toc-Strings-1" href="Strings.html#Strings">16.3 Strings</a></li>
+    <li><a id="toc-Array-Type-Designators-1" href="Array-Type-Designators.html#Array-Type-Designators">16.4 Array Type Designators</a></li>
+    <li><a id="toc-Incomplete-Array-Types-1" href="Incomplete-Array-Types.html#Incomplete-Array-Types">16.5 Incomplete Array Types</a></li>
+    <li><a id="toc-Limitations-of-C-Arrays-1" href="Limitations-of-C-Arrays.html#Limitations-of-C-Arrays">16.6 Limitations of C Arrays</a></li>
+    <li><a id="toc-Multidimensional-Arrays-1" href="Multidimensional-Arrays.html#Multidimensional-Arrays">16.7 Multidimensional Arrays</a></li>
+    <li><a id="toc-Constructing-Array-Values-1" href="Constructing-Array-Values.html#Constructing-Array-Values">16.8 Constructing Array Values</a></li>
+    <li><a id="toc-Arrays-of-Variable-Length-1" href="Arrays-of-Variable-Length.html#Arrays-of-Variable-Length">16.9 Arrays of Variable Length</a></li>
+  </ul></li>
+  <li><a id="toc-Enumeration-Types-1" href="Enumeration-Types.html#Enumeration-Types">17 Enumeration Types</a></li>
+  <li><a id="toc-Defining-Typedef-Names-1" href="Defining-Typedef-Names.html#Defining-Typedef-Names">18 Defining Typedef Names</a></li>
+  <li><a id="toc-Statements-1" href="Statements.html#Statements">19 Statements</a>
+  <ul class="no-bullet">
+    <li><a id="toc-Expression-Statement-1" href="Expression-Statement.html#Expression-Statement">19.1 Expression Statement</a></li>
+    <li><a id="toc-if-Statement-1" href="if-Statement.html#if-Statement">19.2 <code>if</code> Statement</a></li>
+    <li><a id="toc-if_002delse-Statement-1" href="if_002delse-Statement.html#if_002delse-Statement">19.3 <code>if-else</code> Statement</a></li>
+    <li><a id="toc-Blocks-1" href="Blocks.html#Blocks">19.4 Blocks</a></li>
+    <li><a id="toc-return-Statement-1" href="return-Statement.html#return-Statement">19.5 <code>return</code> Statement</a></li>
+    <li><a id="toc-Loop-Statements-1" href="Loop-Statements.html#Loop-Statements">19.6 Loop Statements</a>
+    <ul class="no-bullet">
+      <li><a id="toc-while-Statement-1" href="while-Statement.html#while-Statement">19.6.1 <code>while</code> Statement</a></li>
+      <li><a id="toc-do_002dwhile-Statement-1" href="do_002dwhile-Statement.html#do_002dwhile-Statement">19.6.2 <code>do-while</code> Statement</a></li>
+      <li><a id="toc-break-Statement-1" href="break-Statement.html#break-Statement">19.6.3 <code>break</code> Statement</a></li>
+      <li><a id="toc-for-Statement-1" href="for-Statement.html#for-Statement">19.6.4 <code>for</code> Statement</a></li>
+      <li><a id="toc-Example-of-for-1" href="Example-of-for.html#Example-of-for">19.6.5 Example of <code>for</code></a></li>
+      <li><a id="toc-Omitted-for_002dExpressions-1" href="Omitted-for_002dExpressions.html#Omitted-for_002dExpressions">19.6.6 Omitted <code>for</code>-Expressions</a></li>
+      <li><a id="toc-for_002dIndex-Declarations-1" href="for_002dIndex-Declarations.html#for_002dIndex-Declarations">19.6.7 <code>for</code>-Index Declarations</a></li>
+      <li><a id="toc-continue-Statement-1" href="continue-Statement.html#continue-Statement">19.6.8 <code>continue</code> Statement</a></li>
+    </ul></li>
+    <li><a id="toc-switch-Statement-1" href="switch-Statement.html#switch-Statement">19.7 <code>switch</code> Statement</a></li>
+    <li><a id="toc-Example-of-switch" href="switch-Example.html#switch-Example">19.8 Example of <code>switch</code></a></li>
+    <li><a id="toc-Duff_0027s-Device" href="Duffs-Device.html#Duffs-Device">19.9 Duff&rsquo;s Device</a></li>
+    <li><a id="toc-Case-Ranges-1" href="Case-Ranges.html#Case-Ranges">19.10 Case Ranges</a></li>
+    <li><a id="toc-Null-Statement-1" href="Null-Statement.html#Null-Statement">19.11 Null Statement</a></li>
+    <li><a id="toc-goto-Statement-and-Labels" href="goto-Statement.html#goto-Statement">19.12 <code>goto</code> Statement and Labels</a></li>
+    <li><a id="toc-Locally-Declared-Labels" href="Local-Labels.html#Local-Labels">19.13 Locally Declared Labels</a></li>
+    <li><a id="toc-Labels-as-Values-1" href="Labels-as-Values.html#Labels-as-Values">19.14 Labels as Values</a>
+    <ul class="no-bullet">
+      <li><a id="toc-Label-Value-Uses-1" href="Label-Value-Uses.html#Label-Value-Uses">19.14.1 Label Value Uses</a></li>
+      <li><a id="toc-Label-Value-Caveats-1" href="Label-Value-Caveats.html#Label-Value-Caveats">19.14.2 Label Value Caveats</a></li>
+    </ul></li>
+    <li><a id="toc-Statements-and-Declarations-in-Expressions" href="Statement-Exprs.html#Statement-Exprs">19.15 Statements and Declarations in Expressions</a></li>
+  </ul></li>
+  <li><a id="toc-Variables-1" href="Variables.html#Variables">20 Variables</a>
+  <ul class="no-bullet">
+    <li><a id="toc-Variable-Declarations-1" href="Variable-Declarations.html#Variable-Declarations">20.1 Variable Declarations</a>
+    <ul class="no-bullet">
+      <li><a id="toc-Declaring-Arrays-and-Pointers-1" href="Declaring-Arrays-and-Pointers.html#Declaring-Arrays-and-Pointers">20.1.1 Declaring Arrays and Pointers</a></li>
+      <li><a id="toc-Combining-Variable-Declarations-1" href="Combining-Variable-Declarations.html#Combining-Variable-Declarations">20.1.2 Combining Variable Declarations</a></li>
+    </ul></li>
+    <li><a id="toc-Initializers-1" href="Initializers.html#Initializers">20.2 Initializers</a></li>
+    <li><a id="toc-Designated-Initializers" href="Designated-Inits.html#Designated-Inits">20.3 Designated Initializers</a></li>
+    <li><a id="toc-Referring-to-a-Type-with-_005f_005fauto_005ftype" href="Auto-Type.html#Auto-Type">20.4 Referring to a Type with <code>__auto_type</code></a></li>
+    <li><a id="toc-Local-Variables-1" href="Local-Variables.html#Local-Variables">20.5 Local Variables</a></li>
+    <li><a id="toc-File_002dScope-Variables-1" href="File_002dScope-Variables.html#File_002dScope-Variables">20.6 File-Scope Variables</a></li>
+    <li><a id="toc-Static-Local-Variables-1" href="Static-Local-Variables.html#Static-Local-Variables">20.7 Static Local Variables</a></li>
+    <li><a id="toc-extern-Declarations" href="Extern-Declarations.html#Extern-Declarations">20.8 <code>extern</code> Declarations</a></li>
+    <li><a id="toc-Allocating-File_002dScope-Variables" href="Allocating-File_002dScope.html#Allocating-File_002dScope">20.9 Allocating File-Scope Variables</a></li>
+    <li><a id="toc-auto-and-register-1" href="auto-and-register.html#auto-and-register">20.10 <code>auto</code> and <code>register</code></a></li>
+    <li><a id="toc-Omitting-Types-in-Declarations" href="Omitting-Types.html#Omitting-Types">20.11 Omitting Types in Declarations</a></li>
+  </ul></li>
+  <li><a id="toc-Type-Qualifiers-1" href="Type-Qualifiers.html#Type-Qualifiers">21 Type Qualifiers</a>
+  <ul class="no-bullet">
+    <li><a id="toc-const-Variables-and-Fields" href="const.html#const">21.1 <code>const</code> Variables and Fields</a></li>
+    <li><a id="toc-volatile-Variables-and-Fields" href="volatile.html#volatile">21.2 <code>volatile</code> Variables and Fields</a></li>
+    <li><a id="toc-restrict_002dQualified-Pointers" href="restrict-Pointers.html#restrict-Pointers">21.3 <code>restrict</code>-Qualified Pointers</a></li>
+    <li><a id="toc-restrict-Pointer-Example-1" href="restrict-Pointer-Example.html#restrict-Pointer-Example">21.4 <code>restrict</code> Pointer Example</a></li>
+  </ul></li>
+  <li><a id="toc-Functions-1" href="Functions.html#Functions">22 Functions</a>
+  <ul class="no-bullet">
+    <li><a id="toc-Function-Definitions-1" href="Function-Definitions.html#Function-Definitions">22.1 Function Definitions</a>
+    <ul class="no-bullet">
+      <li><a id="toc-Function-Parameter-Variables-1" href="Function-Parameter-Variables.html#Function-Parameter-Variables">22.1.1 Function Parameter Variables</a></li>
+      <li><a id="toc-Forward-Function-Declarations-1" href="Forward-Function-Declarations.html#Forward-Function-Declarations">22.1.2 Forward Function Declarations</a></li>
+      <li><a id="toc-Static-Functions-1" href="Static-Functions.html#Static-Functions">22.1.3 Static Functions</a></li>
+      <li><a id="toc-Arrays-as-Parameters-1" href="Arrays-as-Parameters.html#Arrays-as-Parameters">22.1.4 Arrays as Parameters</a>
+      <ul class="no-bullet">
+        <li><a id="toc-Array-parameters-are-pointers" href="Array-Parm-Pointer.html#Array-Parm-Pointer">22.1.4.1 Array parameters are pointers</a></li>
+        <li><a id="toc-Passing-array-arguments" href="Passing-Array-Args.html#Passing-Array-Args">22.1.4.2 Passing array arguments</a></li>
+        <li><a id="toc-Type-qualifiers-on-array-parameters" href="Array-Parm-Qualifiers.html#Array-Parm-Qualifiers">22.1.4.3 Type qualifiers on array parameters</a></li>
+      </ul></li>
+      <li><a id="toc-Functions-That-Accept-Structure-Arguments" href="Structs-as-Parameters.html#Structs-as-Parameters">22.1.5 Functions That Accept Structure Arguments</a></li>
+    </ul></li>
+    <li><a id="toc-Function-Declarations-1" href="Function-Declarations.html#Function-Declarations">22.2 Function Declarations</a></li>
+    <li><a id="toc-Function-Calls-1" href="Function-Calls.html#Function-Calls">22.3 Function Calls</a></li>
+    <li><a id="toc-Function-Call-Semantics-1" href="Function-Call-Semantics.html#Function-Call-Semantics">22.4 Function Call Semantics</a></li>
+    <li><a id="toc-Function-Pointers-1" href="Function-Pointers.html#Function-Pointers">22.5 Function Pointers</a>
+    <ul class="no-bullet">
+      <li><a id="toc-Declaring-Function-Pointers-1" href="Declaring-Function-Pointers.html#Declaring-Function-Pointers">22.5.1 Declaring Function Pointers</a></li>
+      <li><a id="toc-Assigning-Function-Pointers-1" href="Assigning-Function-Pointers.html#Assigning-Function-Pointers">22.5.2 Assigning Function Pointers</a></li>
+      <li><a id="toc-Calling-Function-Pointers-1" href="Calling-Function-Pointers.html#Calling-Function-Pointers">22.5.3 Calling Function Pointers</a></li>
+    </ul></li>
+    <li><a id="toc-The-main-Function-1" href="The-main-Function.html#The-main-Function">22.6 The <code>main</code> Function</a>
+    <ul class="no-bullet">
+      <li><a id="toc-Returning-Values-from-main" href="Values-from-main.html#Values-from-main">22.6.1 Returning Values from <code>main</code></a></li>
+      <li><a id="toc-Accessing-Command_002dline-Parameters" href="Command_002dline-Parameters.html#Command_002dline-Parameters">22.6.2 Accessing Command-line Parameters</a></li>
+      <li><a id="toc-Accessing-Environment-Variables" href="Environment-Variables.html#Environment-Variables">22.6.3 Accessing Environment Variables</a></li>
+    </ul></li>
+    <li><a id="toc-Advanced-Function-Features" href="Advanced-Definitions.html#Advanced-Definitions">22.7 Advanced Function Features</a>
+    <ul class="no-bullet">
+      <li><a id="toc-Variable_002dLength-Array-Parameters-1" href="Variable_002dLength-Array-Parameters.html#Variable_002dLength-Array-Parameters">22.7.1 Variable-Length Array Parameters</a></li>
+      <li><a id="toc-Variable_002dLength-Parameter-Lists" href="Variable-Number-of-Arguments.html#Variable-Number-of-Arguments">22.7.2 Variable-Length Parameter Lists</a></li>
+      <li><a id="toc-Nested-Functions-1" href="Nested-Functions.html#Nested-Functions">22.7.3 Nested Functions</a></li>
+      <li><a id="toc-Inline-Function-Definitions-1" href="Inline-Function-Definitions.html#Inline-Function-Definitions">22.7.4 Inline Function Definitions</a></li>
+    </ul></li>
+    <li><a id="toc-Obsolete-Function-Features" href="Obsolete-Definitions.html#Obsolete-Definitions">22.8 Obsolete Function Features</a>
+    <ul class="no-bullet">
+      <li><a id="toc-Older-GNU-C-Inlining" href="Old-GNU-Inlining.html#Old-GNU-Inlining">22.8.1 Older GNU C Inlining</a></li>
+      <li><a id="toc-Old_002dStyle-Function-Definitions-1" href="Old_002dStyle-Function-Definitions.html#Old_002dStyle-Function-Definitions">22.8.2 Old-Style Function Definitions</a></li>
+    </ul></li>
+  </ul></li>
+  <li><a id="toc-Compatible-Types-1" href="Compatible-Types.html#Compatible-Types">23 Compatible Types</a></li>
+  <li><a id="toc-Type-Conversions-1" href="Type-Conversions.html#Type-Conversions">24 Type Conversions</a>
+  <ul class="no-bullet">
+    <li><a id="toc-Explicit-Type-Conversion-1" href="Explicit-Type-Conversion.html#Explicit-Type-Conversion">24.1 Explicit Type Conversion</a></li>
+    <li><a id="toc-Assignment-Type-Conversions-1" href="Assignment-Type-Conversions.html#Assignment-Type-Conversions">24.2 Assignment Type Conversions</a></li>
+    <li><a id="toc-Argument-Promotions-1" href="Argument-Promotions.html#Argument-Promotions">24.3 Argument Promotions</a></li>
+    <li><a id="toc-Operand-Promotions-1" href="Operand-Promotions.html#Operand-Promotions">24.4 Operand Promotions</a></li>
+    <li><a id="toc-Common-Type-1" href="Common-Type.html#Common-Type">24.5 Common Type</a></li>
+  </ul></li>
+  <li><a id="toc-Scope-1" href="Scope.html#Scope">25 Scope</a></li>
+  <li><a id="toc-Preprocessing-1" href="Preprocessing.html#Preprocessing">26 Preprocessing</a>
+  <ul class="no-bullet">
+    <li><a id="toc-Preprocessing-Overview" href="Preproc-Overview.html#Preproc-Overview">26.1 Preprocessing Overview</a></li>
+    <li><a id="toc-Directives-1" href="Directives.html#Directives">26.2 Directives</a></li>
+    <li><a id="toc-Preprocessing-Tokens-1" href="Preprocessing-Tokens.html#Preprocessing-Tokens">26.3 Preprocessing Tokens</a></li>
+    <li><a id="toc-Header-Files-1" href="Header-Files.html#Header-Files">26.4 Header Files</a>
+    <ul class="no-bullet">
+      <li><a id="toc-_0023include-Syntax" href="include-Syntax.html#include-Syntax">26.4.1 <code>#include</code> Syntax</a></li>
+      <li><a id="toc-_0023include-Operation" href="include-Operation.html#include-Operation">26.4.2 <code>#include</code> Operation</a></li>
+      <li><a id="toc-Search-Path-1" href="Search-Path.html#Search-Path">26.4.3 Search Path</a></li>
+      <li><a id="toc-Once_002dOnly-Headers-1" href="Once_002dOnly-Headers.html#Once_002dOnly-Headers">26.4.4 Once-Only Headers</a></li>
+      <li><a id="toc-Computed-Includes-1" href="Computed-Includes.html#Computed-Includes">26.4.5 Computed Includes</a></li>
+    </ul></li>
+    <li><a id="toc-Macros-1" href="Macros.html#Macros">26.5 Macros</a>
+    <ul class="no-bullet">
+      <li><a id="toc-Object_002dlike-Macros-1" href="Object_002dlike-Macros.html#Object_002dlike-Macros">26.5.1 Object-like Macros</a></li>
+      <li><a id="toc-Function_002dlike-Macros-1" href="Function_002dlike-Macros.html#Function_002dlike-Macros">26.5.2 Function-like Macros</a></li>
+      <li><a id="toc-Macro-Arguments-1" href="Macro-Arguments.html#Macro-Arguments">26.5.3 Macro Arguments</a></li>
+      <li><a id="toc-Stringification-1" href="Stringification.html#Stringification">26.5.4 Stringification</a></li>
+      <li><a id="toc-Concatenation-1" href="Concatenation.html#Concatenation">26.5.5 Concatenation</a></li>
+      <li><a id="toc-Variadic-Macros-1" href="Variadic-Macros.html#Variadic-Macros">26.5.6 Variadic Macros</a></li>
+      <li><a id="toc-Predefined-Macros-1" href="Predefined-Macros.html#Predefined-Macros">26.5.7 Predefined Macros</a></li>
+      <li><a id="toc-Undefining-and-Redefining-Macros-1" href="Undefining-and-Redefining-Macros.html#Undefining-and-Redefining-Macros">26.5.8 Undefining and Redefining Macros</a></li>
+      <li><a id="toc-Directives-Within-Macro-Arguments-1" href="Directives-Within-Macro-Arguments.html#Directives-Within-Macro-Arguments">26.5.9 Directives Within Macro Arguments</a></li>
+      <li><a id="toc-Macro-Pitfalls-1" href="Macro-Pitfalls.html#Macro-Pitfalls">26.5.10 Macro Pitfalls</a>
+      <ul class="no-bullet">
+        <li><a id="toc-Misnesting-1" href="Misnesting.html#Misnesting">26.5.10.1 Misnesting</a></li>
+        <li><a id="toc-Operator-Precedence-Problems-1" href="Operator-Precedence-Problems.html#Operator-Precedence-Problems">26.5.10.2 Operator Precedence Problems</a></li>
+        <li><a id="toc-Swallowing-the-Semicolon-1" href="Swallowing-the-Semicolon.html#Swallowing-the-Semicolon">26.5.10.3 Swallowing the Semicolon</a></li>
+        <li><a id="toc-Duplication-of-Side-Effects-1" href="Duplication-of-Side-Effects.html#Duplication-of-Side-Effects">26.5.10.4 Duplication of Side Effects</a></li>
+        <li><a id="toc-Using-_005f_005fauto_005ftype-for-Local-Variables" href="Macros-and-Auto-Type.html#Macros-and-Auto-Type">26.5.10.5 Using <code>__auto_type</code> for Local Variables</a></li>
+        <li><a id="toc-Self_002dReferential-Macros-1" href="Self_002dReferential-Macros.html#Self_002dReferential-Macros">26.5.10.6 Self-Referential Macros</a></li>
+        <li><a id="toc-Argument-Prescan-1" href="Argument-Prescan.html#Argument-Prescan">26.5.10.7 Argument Prescan</a></li>
+      </ul></li>
+    </ul></li>
+    <li><a id="toc-Conditionals-1" href="Conditionals.html#Conditionals">26.6 Conditionals</a>
+    <ul class="no-bullet">
+      <li><a id="toc-Uses-of-Conditional-Directives" href="Conditional-Uses.html#Conditional-Uses">26.6.1 Uses of Conditional Directives</a></li>
+      <li><a id="toc-Syntax-of-Preprocessing-Conditionals" href="Conditional-Syntax.html#Conditional-Syntax">26.6.2 Syntax of Preprocessing Conditionals</a>
+      <ul class="no-bullet">
+        <li><a id="toc-The-_0023ifdef-directive" href="ifdef.html#ifdef">26.6.2.1 The <code>#ifdef</code> directive</a></li>
+        <li><a id="toc-The-_0023if-directive" href="if.html#if">26.6.2.2 The <code>#if</code> directive</a></li>
+        <li><a id="toc-The-defined-test" href="defined.html#defined">26.6.2.3 The <code>defined</code> test</a></li>
+        <li><a id="toc-The-_0023else-directive" href="else.html#else">26.6.2.4 The <code>#else</code> directive</a></li>
+        <li><a id="toc-The-_0023elif-directive" href="elif.html#elif">26.6.2.5 The <code>#elif</code> directive</a></li>
+      </ul></li>
+      <li><a id="toc-Deleted-Code-1" href="Deleted-Code.html#Deleted-Code">26.6.3 Deleted Code</a></li>
+    </ul></li>
+    <li><a id="toc-Diagnostics-1" href="Diagnostics.html#Diagnostics">26.7 Diagnostics</a></li>
+    <li><a id="toc-Line-Control-1" href="Line-Control.html#Line-Control">26.8 Line Control</a></li>
+    <li><a id="toc-Null-Directive-1" href="Null-Directive.html#Null-Directive">26.9 Null Directive</a></li>
+  </ul></li>
+  <li><a id="toc-Integers-in-Depth-1" href="Integers-in-Depth.html#Integers-in-Depth">27 Integers in Depth</a>
+  <ul class="no-bullet">
+    <li><a id="toc-Integer-Representations-1" href="Integer-Representations.html#Integer-Representations">27.1 Integer Representations</a></li>
+    <li><a id="toc-Maximum-and-Minimum-Values-1" href="Maximum-and-Minimum-Values.html#Maximum-and-Minimum-Values">27.2 Maximum and Minimum Values</a></li>
+  </ul></li>
+  <li><a id="toc-Floating-Point-in-Depth-1" href="Floating-Point-in-Depth.html#Floating-Point-in-Depth">28 Floating Point in Depth</a>
+  <ul class="no-bullet">
+    <li><a id="toc-Floating_002dPoint-Representations" href="Floating-Representations.html#Floating-Representations">28.1 Floating-Point Representations</a></li>
+    <li><a id="toc-Floating_002dPoint-Type-Specifications" href="Floating-Type-Specs.html#Floating-Type-Specs">28.2 Floating-Point Type Specifications</a></li>
+    <li><a id="toc-Special-Floating_002dPoint-Values" href="Special-Float-Values.html#Special-Float-Values">28.3 Special Floating-Point Values</a></li>
+    <li><a id="toc-Invalid-Optimizations-1" href="Invalid-Optimizations.html#Invalid-Optimizations">28.4 Invalid Optimizations</a></li>
+    <li><a id="toc-Floating-Arithmetic-Exception-Flags" href="Exception-Flags.html#Exception-Flags">28.5 Floating Arithmetic Exception Flags</a></li>
+    <li><a id="toc-Exact-Floating_002dPoint-Arithmetic" href="Exact-Floating_002dPoint.html#Exact-Floating_002dPoint">28.6 Exact Floating-Point Arithmetic</a></li>
+    <li><a id="toc-Rounding-1" href="Rounding.html#Rounding">28.7 Rounding</a></li>
+    <li><a id="toc-Rounding-Issues-1" href="Rounding-Issues.html#Rounding-Issues">28.8 Rounding Issues</a></li>
+    <li><a id="toc-Significance-Loss-1" href="Significance-Loss.html#Significance-Loss">28.9 Significance Loss</a></li>
+    <li><a id="toc-Fused-Multiply_002dAdd-1" href="Fused-Multiply_002dAdd.html#Fused-Multiply_002dAdd">28.10 Fused Multiply-Add</a></li>
+    <li><a id="toc-Error-Recovery-1" href="Error-Recovery.html#Error-Recovery">28.11 Error Recovery</a></li>
+    <li><a id="toc-Exact-Floating_002dPoint-Constants" href="Exact-Floating-Constants.html#Exact-Floating-Constants">28.12 Exact Floating-Point Constants</a></li>
+    <li><a id="toc-Handling-Infinity-1" href="Handling-Infinity.html#Handling-Infinity">28.13 Handling Infinity</a></li>
+    <li><a id="toc-Handling-NaN-1" href="Handling-NaN.html#Handling-NaN">28.14 Handling NaN</a></li>
+    <li><a id="toc-Signed-Zeros-1" href="Signed-Zeros.html#Signed-Zeros">28.15 Signed Zeros</a></li>
+    <li><a id="toc-Scaling-by-Powers-of-the-Base" href="Scaling-by-the-Base.html#Scaling-by-the-Base">28.16 Scaling by Powers of the Base</a></li>
+    <li><a id="toc-Rounding-Control-1" href="Rounding-Control.html#Rounding-Control">28.17 Rounding Control</a></li>
+    <li><a id="toc-Machine-Epsilon-1" href="Machine-Epsilon.html#Machine-Epsilon">28.18 Machine Epsilon</a></li>
+    <li><a id="toc-Complex-Arithmetic-1" href="Complex-Arithmetic.html#Complex-Arithmetic">28.19 Complex Arithmetic</a></li>
+    <li><a id="toc-Round_002dTrip-Base-Conversion-1" href="Round_002dTrip-Base-Conversion.html#Round_002dTrip-Base-Conversion">28.20 Round-Trip Base Conversion</a></li>
+    <li><a id="toc-Further-Reading-1" href="Further-Reading.html#Further-Reading">28.21 Further Reading</a></li>
+  </ul></li>
+  <li><a id="toc-Compilation-1" href="Compilation.html#Compilation">29 Compilation</a></li>
+  <li><a id="toc-Directing-Compilation-1" href="Directing-Compilation.html#Directing-Compilation">30 Directing Compilation</a>
+  <ul class="no-bullet">
+    <li><a id="toc-Pragmas-1" href="Pragmas.html#Pragmas">30.1 Pragmas</a>
+    <ul class="no-bullet">
+      <li><a id="toc-Pragma-Basics-1" href="Pragma-Basics.html#Pragma-Basics">30.1.1 Pragma Basics</a></li>
+      <li><a id="toc-Severity-Pragmas-1" href="Severity-Pragmas.html#Severity-Pragmas">30.1.2 Severity Pragmas</a></li>
+      <li><a id="toc-Optimization-Pragmas-1" href="Optimization-Pragmas.html#Optimization-Pragmas">30.1.3 Optimization Pragmas</a></li>
+    </ul></li>
+    <li><a id="toc-Static-Assertions-1" href="Static-Assertions.html#Static-Assertions">30.2 Static Assertions</a></li>
+  </ul></li>
+  <li><a id="toc-Type-Alignment-1" href="Type-Alignment.html#Type-Alignment">Appendix A Type Alignment</a></li>
+  <li><a id="toc-Aliasing-1" href="Aliasing.html#Aliasing">Appendix B Aliasing</a>
+  <ul class="no-bullet">
+    <li><a id="toc-Aliasing-and-Alignment" href="Aliasing-Alignment.html#Aliasing-Alignment">B.1 Aliasing and Alignment</a></li>
+    <li><a id="toc-Aliasing-and-Length" href="Aliasing-Length.html#Aliasing-Length">B.2 Aliasing and Length</a></li>
+    <li><a id="toc-Type-Rules-for-Aliasing" href="Aliasing-Type-Rules.html#Aliasing-Type-Rules">B.3 Type Rules for Aliasing</a></li>
+  </ul></li>
+  <li><a id="toc-Digraphs-1" href="Digraphs.html#Digraphs">Appendix C Digraphs</a></li>
+  <li><a id="toc-Attributes-in-Declarations" href="Attributes.html#Attributes">Appendix D Attributes in Declarations</a></li>
+  <li><a id="toc-Signals-1" href="Signals.html#Signals">Appendix E Signals</a></li>
+  <li><a id="toc-GNU-Free-Documentation-License-1" href="GNU-Free-Documentation-License.html#GNU-Free-Documentation-License">Appendix F GNU Free Documentation License</a></li>
+  <li><a id="toc-Index-of-Symbols-and-Keywords" href="Symbol-Index.html#Symbol-Index" rel="index">Index of Symbols and Keywords</a></li>
+  <li><a id="toc-Concept-Index-1" href="Concept-Index.html#Concept-Index" rel="index">Concept Index</a></li>
+</ul>
+</div>
+
+
+
+<span id="Top"></span><div class="header">
+<p>
+Next: <a href="The-First-Example.html" accesskey="n" rel="next">The First Example</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<span id="GNU-C-Manual"></span><h1 class="top">GNU C Manual</h1>
+
+<p>This manual explains the C language for use with the GNU Compiler
+Collection (GCC) on the GNU/Linux system and other systems.  We refer
+to this dialect as GNU C.  If you already know C, you can use this as
+a reference manual.
+</p>
+<p>If you understand basic concepts of programming but know nothing about
+C, you can read this manual sequentially from the beginning to learn
+the C language.
+</p>
+<p>If you are a beginner to programming, we recommend you first learn a
+language with automatic garbage collection and no explicit pointers,
+rather than starting with C.  Good choices include Lisp, Scheme,
+Python and Java.  C&rsquo;s explicit pointers mean that programmers must be
+careful to avoid certain kinds of errors.
+</p>
+<p>C is a venerable language; it was first used in 1973.  The GNU C
+Compiler, which was subsequently extended into the GNU Compiler
+Collection, was first released in 1987.  Other important languages
+were designed based on C: once you know C, it gives you a useful base
+for learning C<tt>++</tt>, C#, Java, Scala, D, Go, and more.
+</p>
+<p>The special advantage of C is that it is fairly simple while allowing
+close access to the computer&rsquo;s hardware, which previously required
+writing in assembler language to describe the individual machine
+instructions.  Some have called C a &ldquo;high-level assembler language&rdquo;
+because of its explicit pointers and lack of automatic management of
+storage.  As one wag put it, &ldquo;C combines the power of assembler
+language with the convenience of assembler language.&rdquo;  However, C is
+far more portable, and much easier to read and write, than assembler
+language.
+</p>
+<p>This manual focuses on the GNU C language supported by the GNU
+Compiler Collection, version ???.  When a construct may be absent or
+work differently in other C compilers, we say so.  When it is not part
+of ISO standard C, we say it is a &ldquo;GNU C extension,&rdquo; because it is
+useful to know that; however, other dialects and standards are not the
+focus of this manual.  We keep those notes short, unless it is vital
+to say more.  For the same reason, we hardly mention C<tt>++</tt> or other
+languages that the GNU Compiler Collection supports.
+</p>
+<p>Some aspects of the meaning of C programs depend on the target
+platform: which computer, and which operating system, the compiled
+code will run on.  Where this is the case, we say so.
+</p>
+<p>The C language provides no built-in facilities for performing such
+common operations as input/output, memory management, string
+manipulation, and the like.  Instead, these facilities are defined in
+a standard library, which is automatically available in every C
+program.  See <a href="https://www.gnu.org/software/libc/manual/html_node/index.html#Top">The GNU C Library</a> in <cite>The GNU C Library
+Reference Manual</cite>.
+</p>
+<p>This manual incorporates the former GNU C Preprocessor Manual, which
+was among the earliest GNU Manuals.  It also uses some text from the
+earlier GNU C Manual that was written by Trevis Rothwell and James
+Youngman.
+</p>
+<p>GNU C has many obscure features, each one either for historical
+compatibility or meant for very special situations.  We have left them
+to a companion manual, the GNU C Obscurities Manual, which will be
+published digitally later.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="The-First-Example.html" accesskey="1">The First Example</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Getting started with basic C code.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Complete-Program.html" accesskey="2">Complete Program</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">A whole example program
+                                    that can be compiled and run.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Storage.html" accesskey="3">Storage</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Basic layout of storage; bytes.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Beyond-Integers.html" accesskey="4">Beyond Integers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Exploring different numeric types.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Lexical-Syntax.html" accesskey="5">Lexical Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The various lexical components of C programs.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Arithmetic.html" accesskey="6">Arithmetic</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Numeric computations.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Assignment-Expressions.html" accesskey="7">Assignment Expressions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Storing values in variables.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Execution-Control-Expressions.html" accesskey="8">Execution Control Expressions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Expressions combining values in various ways.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Binary-Operator-Grammar.html" accesskey="9">Binary Operator Grammar</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">An overview of operator precedence.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Order-of-Execution.html">Order of Execution</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The order of program execution.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Primitive-Types.html">Primitive Types</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">More details about primitive data types.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Constants.html">Constants</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Explicit constant values:
+                                    details and examples.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Type-Size.html">Type Size</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The memory space occupied by a type.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Pointers.html">Pointers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Creating and manipulating memory pointers.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Structures.html">Structures</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Compound data types built
+                                    by grouping other types.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Arrays.html">Arrays</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Creating and manipulating arrays.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Enumeration-Types.html">Enumeration Types</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Sets of integers with named values.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Defining-Typedef-Names.html">Defining Typedef Names</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Using <code>typedef</code> to define type names.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Statements.html">Statements</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Controling program flow.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Variables.html">Variables</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Details about declaring, initializing,
+                                    and using variables.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Type-Qualifiers.html">Type Qualifiers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Mark variables for certain intended uses.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Functions.html">Functions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Declaring, defining, and calling functions.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Compatible-Types.html">Compatible Types</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to tell if two types are compatible
+                                    with each other.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Type-Conversions.html">Type Conversions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Converting between types.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Scope.html">Scope</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Different categories of identifier scope.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Preprocessing.html">Preprocessing</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Using the GNU C preprocessor.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Integers-in-Depth.html">Integers in Depth</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How integer numbers are represented.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Floating-Point-in-Depth.html">Floating Point in Depth</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How floating-point numbers are represented.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Compilation.html">Compilation</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to compile multi-file programs.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Directing-Compilation.html">Directing Compilation</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Operations that affect compilation
+                                    but don&rsquo;t change the program.
+</td></tr>
+<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
+
+Appendices
+
+</pre></th></tr><tr><td align="left" valign="top">&bull; <a href="Type-Alignment.html">Type Alignment</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Where in memory a type can validly start.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Aliasing.html">Aliasing</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Accessing the same data in two types.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Digraphs.html">Digraphs</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Two-character aliases for some characters.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Attributes.html">Attributes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Specifying additional information
+                                    in a declaration.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Signals.html">Signals</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Fatal errors triggered in various scenarios.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="GNU-Free-Documentation-License.html">GNU Free Documentation License</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The license for this manual.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Symbol-Index.html" rel="index">Symbol Index</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Keyword and symbol index.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Concept-Index.html" rel="index">Concept Index</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Detailed topical index.
+</td></tr>
+<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
+
+</pre></th></tr><tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">&mdash; The Detailed Node Listing &mdash;
+
+</pre></th></tr><tr><td align="left" valign="top">&bull; <a href="Recursive-Fibonacci.html">Recursive Fibonacci</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Writing a simple function recursively.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Stack.html">Stack</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Each function call uses space in the stack.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Iterative-Fibonacci.html">Iterative Fibonacci</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Writing the same function iteratively.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Complete-Example.html">Complete Example</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Turn the simple function into a full program.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Complete-Explanation.html">Complete Explanation</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Explanation of each part of the example.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Complete-Line_002dby_002dLine.html">Complete Line-by-Line</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Explaining each line of the example.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Compile-Example.html">Compile Example</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Using GCC to compile the example.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Float-Example.html">Float Example</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">A function that uses floating-point numbers.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Array-Example.html">Array Example</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">A function that works with arrays.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Array-Example-Call.html">Array Example Call</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to call that function.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Array-Example-Variations.html">Array Example Variations</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Different ways to write the call example.
+</td></tr>
+<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
+
+Lexical Syntax
+
+</pre></th></tr><tr><td align="left" valign="top">&bull; <a href="English.html">English</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Write programs in English!
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Characters.html">Characters</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The characters allowed in C programs.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Whitespace.html">Whitespace</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The particulars of whitespace characters.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Comments.html">Comments</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to include comments in C code.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Identifiers.html">Identifiers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to form identifiers (names).
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Operators_002fPunctuation.html">Operators/Punctuation</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Characters used as operators or punctuation.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Line-Continuation.html">Line Continuation</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Splitting one line into multiple lines.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Digraphs.html">Digraphs</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Two-character substitutes for some characters.
+</td></tr>
+<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
+
+Arithmetic
+
+</pre></th></tr><tr><td align="left" valign="top">&bull; <a href="Basic-Arithmetic.html">Basic Arithmetic</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Addition, subtraction, multiplication,
+                                   and division.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Integer-Arithmetic.html">Integer Arithmetic</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How C performs arithmetic with integer values.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Integer-Overflow.html">Integer Overflow</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">When an integer value exceeds the range
+                                   of its type.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Mixed-Mode.html">Mixed Mode</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Calculating with both integer values
+                                   and floating-point values.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Division-and-Remainder.html">Division and Remainder</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How integer division works.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Numeric-Comparisons.html">Numeric Comparisons</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Comparing numeric values for
+                                   equality or order.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Shift-Operations.html">Shift Operations</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Shift integer bits left or right.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Bitwise-Operations.html">Bitwise Operations</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Bitwise conjunction, disjunction, negation.
+</td></tr>
+<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
+
+Assignment Expressions
+
+</pre></th></tr><tr><td align="left" valign="top">&bull; <a href="Simple-Assignment.html">Simple Assignment</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The basics of storing a value.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Lvalues.html">Lvalues</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Expressions into which a value can be stored.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Modifying-Assignment.html">Modifying Assignment</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Shorthand for changing an lvalue&rsquo;s contents.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Increment_002fDecrement.html">Increment/Decrement</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Shorthand for incrementing and decrementing
+                                   an lvalue&rsquo;s contents.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Postincrement_002fPostdecrement.html">Postincrement/Postdecrement</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Accessing then incrementing or decrementing.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Assignment-in-Subexpressions.html">Assignment in Subexpressions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to avoid ambiguity.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Write-Assignments-Separately.html">Write Assignments Separately</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Write assignments as separate statements.
+</td></tr>
+<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
+
+Execution Control Expressions
+
+</pre></th></tr><tr><td align="left" valign="top">&bull; <a href="Logical-Operators.html">Logical Operators</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Logical conjunction, disjunction, negation.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Logicals-and-Comparison.html">Logicals and Comparison</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Logical operators with comparison operators.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Logicals-and-Assignments.html">Logicals and Assignments</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Assignments with logical operators.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Conditional-Expression.html">Conditional Expression</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">An if/else construct inside expressions.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Comma-Operator.html">Comma Operator</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Build a sequence of subexpressions.
+</td></tr>
+<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
+
+Order of Execution
+
+</pre></th></tr><tr><td align="left" valign="top">&bull; <a href="Reordering-of-Operands.html">Reordering of Operands</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Operations in C are not necessarily computed
+                                   in the order they are written.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Associativity-and-Ordering.html">Associativity and Ordering</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Some associative operations are performed
+                                   in a particular order; others are not.     
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Sequence-Points.html">Sequence Points</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Some guarantees about the order of operations.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Postincrement-and-Ordering.html">Postincrement and Ordering</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Ambiguous excution order with postincrement.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Ordering-of-Operands.html">Ordering of Operands</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Evaluation order of operands
+                                   and function arguments.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Optimization-and-Ordering.html">Optimization and Ordering</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Compiler optimizations can reorder operations
+                                   only if it has no impact on program results.
+</td></tr>
+<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
+
+Primitive Data Types
+
+</pre></th></tr><tr><td align="left" valign="top">&bull; <a href="Integer-Types.html">Integer Types</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Description of integer types.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Floating_002dPoint-Data-Types.html">Floating-Point Data Types</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Description of floating-point types.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Complex-Data-Types.html">Complex Data Types</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Description of complex number types.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="The-Void-Type.html">The Void Type</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">A type indicating no value at all.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Other-Data-Types.html">Other Data Types</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">A brief summary of other types.
+</td></tr>
+<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
+
+Constants
+
+</pre></th></tr><tr><td align="left" valign="top">&bull; <a href="Integer-Constants.html">Integer Constants</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Literal integer values.                   
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Integer-Const-Type.html">Integer Const Type</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Types of literal integer values.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Floating-Constants.html">Floating Constants</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Literal floating-point values.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Imaginary-Constants.html">Imaginary Constants</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Literal imaginary number values.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Invalid-Numbers.html">Invalid Numbers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Avoiding preprocessing number misconceptions.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Character-Constants.html">Character Constants</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Literal character values.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Unicode-Character-Codes.html">Unicode Character Codes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Unicode characters represented
+                                   in either UTF-16 or UTF-32.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Wide-Character-Constants.html">Wide Character Constants</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Literal characters values larger than 8 bits.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="String-Constants.html">String Constants</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Literal string values.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="UTF_002d8-String-Constants.html">UTF-8 String Constants</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Literal UTF-8 string values.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Wide-String-Constants.html">Wide String Constants</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Literal string values made up of
+                                   16- or 32-bit characters.
+</td></tr>
+<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
+
+Pointers
+
+</pre></th></tr><tr><td align="left" valign="top">&bull; <a href="Address-of-Data.html">Address of Data</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Using the &ldquo;address-of&rdquo; operator.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Pointer-Types.html">Pointer Types</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">For each type, there is a pointer type.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Pointer-Declarations.html">Pointer Declarations</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Declaring variables with pointer types.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Pointer-Type-Designators.html">Pointer Type Designators</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Designators for pointer types.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Pointer-Dereference.html">Pointer Dereference</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Accessing what a pointer points at.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Null-Pointers.html">Null Pointers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Pointers which do not point to any object.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Invalid-Dereference.html">Invalid Dereference</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Dereferencing null or invalid pointers.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Void-Pointers.html">Void Pointers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Totally generic pointers, can cast to any.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Pointer-Comparison.html">Pointer Comparison</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Comparing memory address values.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Pointer-Arithmetic.html">Pointer Arithmetic</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Computing memory address values.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Pointers-and-Arrays.html">Pointers and Arrays</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Using pointer syntax instead of array syntax.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Pointer-Arithmetic-Low-Level.html">Pointer Arithmetic Low Level</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">More about computing memory address values.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Pointer-Increment_002fDecrement.html">Pointer Increment/Decrement</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Incrementing and decrementing pointers.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Pointer-Arithmetic-Drawbacks.html">Pointer Arithmetic Drawbacks</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">A common pointer bug to watch out for.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Pointer_002dInteger-Conversion.html">Pointer-Integer Conversion</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Converting pointer types to integer types.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Printing-Pointers.html">Printing Pointers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Using <code>printf</code> for a pointer&rsquo;s value.
+</td></tr>
+<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
+
+Structures
+
+</pre></th></tr><tr><td align="left" valign="top">&bull; <a href="Referencing-Fields.html">Referencing Fields</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Accessing field values in a structure object.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Dynamic-Memory-Allocation.html">Dynamic Memory Allocation</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Allocating space for objects
+                                   while the program is running.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Field-Offset.html">Field Offset</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Memory layout of fields within a structure.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Structure-Layout.html">Structure Layout</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Planning the memory layout of fields.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Packed-Structures.html">Packed Structures</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Packing structure fields as close as possible.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Bit-Fields.html">Bit Fields</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Dividing integer fields
+                                   into fields with fewer bits.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Bit-Field-Packing.html">Bit Field Packing</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How bit fields pack together in integers.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="const-Fields.html">const Fields</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Making structure fields immutable.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Zero-Length.html">Zero Length</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Zero-length array as a variable-length object.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Flexible-Array-Fields.html">Flexible Array Fields</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Another approach to variable-length objects.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Overlaying-Structures.html">Overlaying Structures</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Casting one structure type 
+                                   over an object of another structure type.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Structure-Assignment.html">Structure Assignment</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Assigning values to structure objects.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Unions.html">Unions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Viewing the same object in different types.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Packing-With-Unions.html">Packing With Unions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Using a union type to pack various types into
+                                   the same memory space.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Cast-to-Union.html">Cast to Union</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Casting a value one of the union&rsquo;s alternative
+                                   types to the type of the union itself.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Structure-Constructors.html">Structure Constructors</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Building new structure objects.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Unnamed-Types-as-Fields.html">Unnamed Types as Fields</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Fields&rsquo; types do not always need names.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Incomplete-Types.html">Incomplete Types</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Types which have not been fully defined.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Intertwined-Incomplete-Types.html">Intertwined Incomplete Types</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Defining mutually-recursive structue types.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Type-Tags.html">Type Tags</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Scope of structure and union type tags.
+</td></tr>
+<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
+
+Arrays
+
+</pre></th></tr><tr><td align="left" valign="top">&bull; <a href="Accessing-Array-Elements.html">Accessing Array Elements</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to access individual elements of an array.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Declaring-an-Array.html">Declaring an Array</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to name and reserve space for a new array.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Strings.html">Strings</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">A string in C is a special case of array.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Incomplete-Array-Types.html">Incomplete Array Types</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Naming, but not allocating, a new array.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Limitations-of-C-Arrays.html">Limitations of C Arrays</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Arrays are not first-class objects.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Multidimensional-Arrays.html">Multidimensional Arrays</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Arrays of arrays.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Constructing-Array-Values.html">Constructing Array Values</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Assigning values to an entire array at once.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Arrays-of-Variable-Length.html">Arrays of Variable Length</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Declaring arrays of non-constant size.
+</td></tr>
+<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
+
+Statements
+
+</pre></th></tr><tr><td align="left" valign="top">&bull; <a href="Expression-Statement.html">Expression Statement</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Evaluate an expression, as a statement,
+                                   usually done for a side effect.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="if-Statement.html">if Statement</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Basic conditional execution.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="if_002delse-Statement.html">if-else Statement</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Multiple branches for conditional execution.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Blocks.html">Blocks</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Grouping multiple statements together.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="return-Statement.html">return Statement</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Return a value from a function.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Loop-Statements.html">Loop Statements</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Repeatedly executing a statement or block.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="switch-Statement.html">switch Statement</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Multi-way conditional choices.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="switch-Example.html">switch Example</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">A plausible example of using <code>switch</code>.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Duffs-Device.html">Duffs Device</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">A special way to use <code>switch</code>.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Case-Ranges.html">Case Ranges</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Ranges of values for <code>switch</code> cases.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Null-Statement.html">Null Statement</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">A statement that does nothing.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="goto-Statement.html">goto Statement</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Jump to another point in the source code,
+                                   identified by a label.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Local-Labels.html">Local Labels</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Labels with limited scope.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Labels-as-Values.html">Labels as Values</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Getting the address of a label.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Statement-Exprs.html">Statement Exprs</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">A series of statements used as an expression.
+</td></tr>
+<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
+
+Variables
+
+</pre></th></tr><tr><td align="left" valign="top">&bull; <a href="Variable-Declarations.html">Variable Declarations</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Name a variable and and reserve space for it.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Initializers.html">Initializers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Assigning inital values to variables.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Designated-Inits.html">Designated Inits</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Assigning initial values to array elements
+                                   at particular array indices.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Auto-Type.html">Auto Type</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Obtaining the type of a variable.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Local-Variables.html">Local Variables</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Variables declared in function definitions.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="File_002dScope-Variables.html">File-Scope Variables</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Variables declared outside of
+                                   function definitions.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Static-Local-Variables.html">Static Local Variables</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Variables declared within functions,
+                                   but with permanent storage allocation.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Extern-Declarations.html">Extern Declarations</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Declaring a variable
+                                   which is allocated somewhere else.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Allocating-File_002dScope.html">Allocating File-Scope</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">When is space allocated
+                                   for file-scope variables?
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="auto-and-register.html">auto and register</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Historically used storage directions.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Omitting-Types.html">Omitting Types</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The bad practice of declaring variables
+                                   with implicit type.
+</td></tr>
+<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
+
+Type Qualifiers
+
+</pre></th></tr><tr><td align="left" valign="top">&bull; <a href="const.html">const</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Variables whose values don&rsquo;t change.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="volatile.html">volatile</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Variables whose values may be accessed
+                                   or changed outside of the control of
+                                   this program.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="restrict-Pointers.html">restrict Pointers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Restricted pointers for code optimization.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="restrict-Pointer-Example.html">restrict Pointer Example</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Example of how that works.
+</td></tr>
+<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
+
+Functions
+
+</pre></th></tr><tr><td align="left" valign="top">&bull; <a href="Function-Definitions.html">Function Definitions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Writing the body of a function.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Function-Declarations.html">Function Declarations</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Declaring the interface of a function.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Function-Calls.html">Function Calls</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Using functions.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Function-Call-Semantics.html">Function Call Semantics</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Call-by-value argument passing.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Function-Pointers.html">Function Pointers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Using references to functions.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="The-main-Function.html">The main Function</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Where execution of a GNU C program begins.
+</td></tr>
+<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
+
+Type Conversions
+
+</pre></th></tr><tr><td align="left" valign="top">&bull; <a href="Explicit-Type-Conversion.html">Explicit Type Conversion</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Casting a value from one type to another.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Assignment-Type-Conversions.html">Assignment Type Conversions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Automatic conversion by assignment operation.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Argument-Promotions.html">Argument Promotions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Automatic conversion of function parameters.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Operand-Promotions.html">Operand Promotions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Automatic conversion of arithmetic operands.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Common-Type.html">Common Type</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">When operand types differ, which one is used?
+</td></tr>
+<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
+
+Scope
+
+</pre></th></tr><tr><td align="left" valign="top">&bull; <a href="Scope.html">Scope</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Different categories of identifier scope.
+</td></tr>
+<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
+
+Preprocessing
+
+</pre></th></tr><tr><td align="left" valign="top">&bull; <a href="Preproc-Overview.html">Preproc Overview</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Introduction to the C preprocessor.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Directives.html">Directives</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The form of preprocessor directives.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Preprocessing-Tokens.html">Preprocessing Tokens</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The lexical elements of preprocessing.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Header-Files.html">Header Files</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Including one source file in another.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Macros.html">Macros</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Macro expansion by the preprocessor.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Conditionals.html">Conditionals</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Controling whether to compile some lines
+                                   or ignore them.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Diagnostics.html">Diagnostics</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Reporting warnings and errors.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Line-Control.html">Line Control</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Reporting source line numbers.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Null-Directive.html">Null Directive</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">A preprocessing no-op.
+</td></tr>
+<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
+
+Integers in Depth
+
+</pre></th></tr><tr><td align="left" valign="top">&bull; <a href="Integer-Representations.html">Integer Representations</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How integer values appear in memory.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Maximum-and-Minimum-Values.html">Maximum and Minimum Values</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Value ranges of integer types.
+</td></tr>
+<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
+
+Floating Point in Depth
+
+</pre></th></tr><tr><td align="left" valign="top">&bull; <a href="Floating-Representations.html">Floating Representations</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How floating-point values appear in memory.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Floating-Type-Specs.html">Floating Type Specs</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Precise details of memory representations.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Special-Float-Values.html">Special Float Values</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Infinity, Not a Number, and Subnormal Numbers.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Invalid-Optimizations.html">Invalid Optimizations</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Don&rsquo;t mess up non-numbers and signed zeros.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Exception-Flags.html">Exception Flags</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Handling certain conditions in floating point.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Exact-Floating_002dPoint.html">Exact Floating-Point</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Not all floating calculations lose precision.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Rounding.html">Rounding</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">When a floating result can&rsquo;t be represented
+                                   exactly in the floating-point type in use.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Rounding-Issues.html">Rounding Issues</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Avoid magnifying rounding errors.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Significance-Loss.html">Significance Loss</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Subtracting numbers that are almost equal.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Fused-Multiply_002dAdd.html">Fused Multiply-Add</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Taking advantage of a special floating-point
+                                   instruction for faster execution.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Error-Recovery.html">Error Recovery</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Determining rounding errors.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Exact-Floating-Constants.html">Exact Floating Constants</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Precisely specified floating-point numbers.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Handling-Infinity.html">Handling Infinity</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">When floating calculation is out of range.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Handling-NaN.html">Handling NaN</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">What floating calculation is undefined.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Signed-Zeros.html">Signed Zeros</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Positive zero vs. negative zero.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Scaling-by-the-Base.html">Scaling by the Base</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">A useful exact floating-point operation.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Rounding-Control.html">Rounding Control</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Specifying some rounding behaviors.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Machine-Epsilon.html">Machine Epsilon</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The smallest number you can add to 1.0
+                                   and get a sum which is larger than 1.0.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Complex-Arithmetic.html">Complex Arithmetic</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Details of arithmetic with complex numbers.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Round_002dTrip-Base-Conversion.html">Round-Trip Base Conversion</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">What happens between base-2 and base-10.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Further-Reading.html">Further Reading</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">References for floating-point numbers.
+</td></tr>
+<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
+
+Directing Compilation
+
+</pre></th></tr><tr><td align="left" valign="top">&bull; <a href="Pragmas.html">Pragmas</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Controling compilation of some constructs.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Static-Assertions.html">Static Assertions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Compile-time tests for conditions.    
+</td></tr>
+<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
+
+</pre></th></tr></table>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="The-First-Example.html" accesskey="n" rel="next">The First Example</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/restrict-Pointer-Example.html
===================================================================
--- public/doc/gnu-c/restrict-Pointer-Example.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/restrict-Pointer-Example.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,145 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>restrict Pointer Example (GNU C Language Manual)</title>
+
+<meta name="description" content="restrict Pointer Example (GNU C Language Manual)">
+<meta name="keywords" content="restrict Pointer Example (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Type-Qualifiers.html" rel="up" title="Type Qualifiers">
+<link href="Functions.html" rel="next" title="Functions">
+<link href="restrict-Pointers.html" rel="prev" title="restrict Pointers">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="restrict-Pointer-Example"></span><div class="header">
+<p>
+Previous: <a href="restrict-Pointers.html" accesskey="p" rel="prev">restrict Pointers</a>, Up: <a href="Type-Qualifiers.html" accesskey="u" rel="up">Type Qualifiers</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>
+</div>
+<hr>
+<span id="restrict-Pointer-Example-1"></span><h3 class="section">21.4 <code>restrict</code> Pointer Example</h3>
+
+<p>Here are examples where <code>restrict</code> enables real optimization.
+</p>
+<p>In this example, <code>restrict</code> assures GCC that the array <code>out</code>
+points to does not overlap with the array <code>in</code> points to.
+</p>
+<div class="example">
+<pre class="example">void
+process_data (const char *in,
+              char * restrict out,
+              size_t size)
+{
+  for (i = 0; i &lt; size; i++)
+    out[i] = in[i] + in[i + 1];
+}
+</pre></div>
+
+<p>Here&rsquo;s a simple tree structure, where each tree node holds data of
+type <code>PAYLOAD</code> plus two subtrees.
+</p>
+<div class="example">
+<pre class="example">struct foo
+  {
+    PAYLOAD payload;
+    struct foo *left;
+    struct foo *right;
+  };
+</pre></div>
+
+<p>Now here&rsquo;s a function to null out both pointers in the <code>left</code>
+subtree.
+</p>
+<div class="example">
+<pre class="example">void
+null_left (struct foo *a)
+{
+  a-&gt;left-&gt;left = NULL;
+  a-&gt;left-&gt;right = NULL;
+}
+</pre></div>
+
+<p>Since <code>*a</code> and <code>*a-&gt;left</code> have the same data type,
+they could legitimately alias (see <a href="Aliasing.html">Aliasing</a>).  Therefore,
+the compiled code for <code>null_left</code> must read <code>a-&gt;left</code>
+again from memory when executing the second assignment statement.
+</p>
+<p>We can enable optimization, so that it does not need to read
+<code>a-&gt;left</code> again, by writing <code>null_left</code> this in a less
+obvious way.
+</p>
+<div class="example">
+<pre class="example">void
+null_left (struct foo *a)
+{
+  struct foo *b = a-&gt;left;
+  b-&gt;left = NULL;
+  b-&gt;right = NULL;
+}
+</pre></div>
+
+<p>A more elegant way to fix this is with <code>restrict</code>.
+</p>
+<div class="example">
+<pre class="example">void
+null_left (struct foo *restrict a)
+{
+  a-&gt;left-&gt;left = NULL;
+  a-&gt;left-&gt;right = NULL;
+}
+</pre></div>
+
+<p>Declaring <code>a</code> as <code>restrict</code> asserts that other pointers such
+as <code>a-&gt;left</code> will not point to the same memory space as <code>a</code>.
+Therefore, the memory location <code>a-&gt;left-&gt;left</code> cannot be the same
+memory as <code>a-&gt;left</code>.  Knowing this, the compiled code may avoid
+reloading <code>a-&gt;left</code> for the second statement.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/restrict-Pointers.html
===================================================================
--- public/doc/gnu-c/restrict-Pointers.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/restrict-Pointers.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,127 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>restrict Pointers (GNU C Language Manual)</title>
+
+<meta name="description" content="restrict Pointers (GNU C Language Manual)">
+<meta name="keywords" content="restrict Pointers (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Type-Qualifiers.html" rel="up" title="Type Qualifiers">
+<link href="restrict-Pointer-Example.html" rel="next" title="restrict Pointer Example">
+<link href="volatile.html" rel="prev" title="volatile">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="restrict-Pointers"></span><div class="header">
+<p>
+Next: <a href="restrict-Pointer-Example.html" accesskey="n" rel="next">restrict Pointer Example</a>, Previous: <a href="volatile.html" accesskey="p" rel="prev">volatile</a>, Up: <a href="Type-Qualifiers.html" accesskey="u" rel="up">Type Qualifiers</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>
+</div>
+<hr>
+<span id="restrict_002dQualified-Pointers"></span><h3 class="section">21.3 <code>restrict</code>-Qualified Pointers</h3>
+<span id="index-restrict-pointers"></span>
+<span id="index-pointers_002c-restrict_002dqualified"></span>
+<span id="index-restrict"></span>
+
+<p>You can declare a pointer as &ldquo;restricted&rdquo; using the <code>restrict</code>
+type qualifier, like this:
+</p>
+<div class="example">
+<pre class="example">int *restrict p = x;
+</pre></div>
+
+<p>This enables better optimization of code that uses the pointer.
+</p>
+<p>If <code>p</code> is declared with <code>restrict</code>, and then the code
+references the object that <code>p</code> points to (using <code>*p</code> or
+<code>p[<var>i</var>]</code>), the <code>restrict</code> declaration promises that the
+code will not access that object in any other way&mdash;only through
+<code>p</code>.
+</p>
+<p>For instance, it means the code must not use another pointer
+to access the same space, as shown here:
+</p>
+<div class="example">
+<pre class="example">int *restrict p = <var>whatever</var>;
+int *q = p;
+foo (*p, *q);
+</pre></div>
+
+<p>That contradicts the <code>restrict</code> promise by accessing the object
+that <code>p</code> points to using <code>q</code>, which bypasses <code>p</code>.
+Likewise, it must not do this:
+</p>
+<div class="example">
+<pre class="example">int *restrict p = <var>whatever</var>;
+struct { int *a, *b; } s;
+s.a = p;
+foo (*p, *s.a);
+</pre></div>
+
+<p>This example uses a structure field instead of the variable <code>q</code>
+to hold the other pointer, and that contradicts the promise just the
+same.
+</p>
+<p>The keyword <code>restrict</code> also promises that <code>p</code> won&rsquo;t point to
+the allocated space of any automatic or static variable.  So the code
+must not do this:
+</p>
+<div class="example">
+<pre class="example">int a;
+int *restrict p = &amp;a;
+foo (*p, a);
+</pre></div>
+
+<p>because that does direct access to the object (<code>a</code>) that <code>p</code>
+points to, which bypasses <code>p</code>.
+</p>
+<p>If the code makes such promises with <code>restrict</code> then breaks them,
+execution is unpredictable.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/return-Statement.html
===================================================================
--- public/doc/gnu-c/return-Statement.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/return-Statement.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,96 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>return Statement (GNU C Language Manual)</title>
+
+<meta name="description" content="return Statement (GNU C Language Manual)">
+<meta name="keywords" content="return Statement (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Statements.html" rel="up" title="Statements">
+<link href="Loop-Statements.html" rel="next" title="Loop Statements">
+<link href="Blocks.html" rel="prev" title="Blocks">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="return-Statement"></span><div class="header">
+<p>
+Next: <a href="Loop-Statements.html" accesskey="n" rel="next">Loop Statements</a>, Previous: <a href="Blocks.html" accesskey="p" rel="prev">Blocks</a>, Up: <a href="Statements.html" accesskey="u" rel="up">Statements</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>
+</div>
+<hr>
+<span id="return-Statement-1"></span><h3 class="section">19.5 <code>return</code> Statement</h3>
+<span id="index-return-statement"></span>
+<span id="index-statement_002c-return"></span>
+<span id="index-return"></span>
+
+<p>The <code>return</code> statement makes the containing function return
+immediately.  It has two forms.  This one specifies no value to
+return:
+</p>
+<div class="example">
+<pre class="example">return;
+</pre></div>
+
+<p>That form is meant for functions whose return type is <code>void</code>
+(see <a href="The-Void-Type.html">The Void Type</a>).  You can also use it in a function that
+returns nonvoid data, but that&rsquo;s a bad idea, since it makes the
+function return garbage.
+</p>
+<p>The form that specifies a value looks like this:
+</p>
+<div class="example">
+<pre class="example">return <var>value</var>;
+</pre></div>
+
+<p>which computes the expression <var>value</var> and makes the function
+return that.  If necessary, the value undergoes type conversion to
+the function&rsquo;s declared return value type, which works like
+assigning the value to a variable of that type.
+</p>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/subnormal-numbers.html
===================================================================
--- public/doc/gnu-c/subnormal-numbers.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/subnormal-numbers.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,56 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<!-- This file redirects to the location of a node or anchor -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>subnormal numbers (GNU C Language Manual)</title>
+
+<meta name="description" content="subnormal numbers (GNU C Language Manual)">
+<meta name="keywords" content="subnormal numbers (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+<meta http-equiv="Refresh" content="0; url=Special-Float-Values.html#subnormal-numbers">
+
+</head>
+
+<body lang="en">
+
+<p>The node you are looking for is at <a href="Special-Float-Values.html#subnormal-numbers">subnormal numbers</a>.</p>
+</body>
Index: public/doc/gnu-c/switch-Example.html
===================================================================
--- public/doc/gnu-c/switch-Example.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/switch-Example.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,131 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>switch Example (GNU C Language Manual)</title>
+
+<meta name="description" content="switch Example (GNU C Language Manual)">
+<meta name="keywords" content="switch Example (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Statements.html" rel="up" title="Statements">
+<link href="Duffs-Device.html" rel="next" title="Duffs Device">
+<link href="switch-Statement.html" rel="prev" title="switch Statement">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="switch-Example"></span><div class="header">
+<p>
+Next: <a href="Duffs-Device.html" accesskey="n" rel="next">Duffs Device</a>, Previous: <a href="switch-Statement.html" accesskey="p" rel="prev">switch Statement</a>, Up: <a href="Statements.html" accesskey="u" rel="up">Statements</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>
+</div>
+<hr>
+<span id="Example-of-switch"></span><h3 class="section">19.8 Example of <code>switch</code></h3>
+
+<p>Here&rsquo;s an example of using the <code>switch</code> statement
+to distinguish among characters:
+</p>
+<span id="index-counting-vowels-and-punctuation"></span>
+<div class="example">
+<pre class="example">struct vp { int vowels, punct; };
+
+struct vp
+count_vowels_and_punct (char *string)
+{
+  int c;
+  int vowels = 0;
+  int punct = 0;
+  /* <span class="roman">Don&rsquo;t change the parameter itself.</span>  */
+  /* <span class="roman">That helps in debugging.</span>  */
+  char *p = string;
+  struct vp value;
+
+  while (c = *p++)
+    switch (c)
+      {
+        case 'y':
+        case 'Y':
+          /* <span class="roman">We assume <code>y_is_consonant</code> will check surrounding
+                letters to determine whether this y is a vowel.</span>  */
+          if (y_is_consonant (p - 1))
+            break;
+
+          /* <span class="roman">Falls through</span> */
+
+        case 'a':
+        case 'e':
+        case 'i':
+        case 'o':
+        case 'u':
+        case 'A':
+        case 'E':
+        case 'I':
+        case 'O':
+        case 'U':
+          vowels++;
+          break;
+
+        case '.':
+        case ',':
+        case ':':
+        case ';':
+        case '?':
+        case '!':
+        case '\&quot;':
+        case '\'':
+          punct++;
+          break;
+      }
+
+  value.vowels = vowels;
+  value.punct = punct;
+
+  return value;
+}
+</pre></div>
+
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/switch-Statement.html
===================================================================
--- public/doc/gnu-c/switch-Statement.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/switch-Statement.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,153 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>switch Statement (GNU C Language Manual)</title>
+
+<meta name="description" content="switch Statement (GNU C Language Manual)">
+<meta name="keywords" content="switch Statement (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Statements.html" rel="up" title="Statements">
+<link href="switch-Example.html" rel="next" title="switch Example">
+<link href="continue-Statement.html" rel="prev" title="continue Statement">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="switch-Statement"></span><div class="header">
+<p>
+Next: <a href="switch-Example.html" accesskey="n" rel="next">switch Example</a>, Previous: <a href="Loop-Statements.html" accesskey="p" rel="prev">Loop Statements</a>, Up: <a href="Statements.html" accesskey="u" rel="up">Statements</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>
+</div>
+<hr>
+<span id="switch-Statement-1"></span><h3 class="section">19.7 <code>switch</code> Statement</h3>
+<span id="index-switch-statement"></span>
+<span id="index-statement_002c-switch"></span>
+<span id="index-switch"></span>
+<span id="index-case"></span>
+<span id="index-default"></span>
+
+<p>The <code>switch</code> statement selects code to run according to the value
+of an expression.  The expression, in parentheses, follows the keyword
+<code>switch</code>.  After that come all the cases to select among,
+inside braces.  It looks like this:
+</p>
+<div class="example">
+<pre class="example">switch (<var>selector</var>)
+  {
+    <var>cases</var><span class="roman">&hellip;</span>
+  }
+</pre></div>
+
+<p>A case can look like this:
+</p>
+<div class="example">
+<pre class="example">case <var>value</var>:
+  <var>statements</var>
+  break;
+</pre></div>
+
+<p>which means &ldquo;come here if <var>selector</var> happens to have the value
+<var>value</var>,&rdquo; or like this (a GNU C extension):
+</p>
+<div class="example">
+<pre class="example">case <var>rangestart</var> ... <var>rangeend</var>:
+  <var>statements</var>
+  break;
+</pre></div>
+
+<p>which means &ldquo;come here if <var>selector</var> happens to have a value
+between <var>rangestart</var> and <var>rangeend</var> (inclusive).&rdquo;  See <a href="Case-Ranges.html">Case Ranges</a>.
+</p>
+<p>The values in <code>case</code> labels must reduce to integer constants.
+They can use arithmetic, and <code>enum</code> constants, but they cannot
+refer to data in memory, because they have to be computed at compile
+time.  It is an error if two <code>case</code> labels specify the same
+value, or ranges that overlap, or if one is a range and the other is a
+value in that range.
+</p>
+<p>You can also define a default case to handle &ldquo;any other value,&rdquo; like
+this:
+</p>
+<div class="example">
+<pre class="example">default:
+  <var>statements</var>
+  break;
+</pre></div>
+
+<p>If the <code>switch</code> statement has no <code>default:</code> label, then it
+does nothing when the value matches none of the cases.
+</p>
+<p>The brace-group inside the <code>switch</code> statement is a block, and you
+can declare variables with that scope just as in any other block
+(see <a href="Blocks.html">Blocks</a>).  However, initializers in these declarations won&rsquo;t
+necessarily be executed every time the <code>switch</code> statement runs,
+so it is best to avoid giving them initializers.
+</p>
+<p><code>break;</code> inside a <code>switch</code> statement exits immediately from
+the <code>switch</code> statement.  See <a href="break-Statement.html">break Statement</a>.
+</p>
+<p>If there is no <code>break;</code> at the end of the code for a case,
+execution continues into the code for the following case.  This
+happens more often by mistake than intentionally, but since this
+feature is used in real code, we cannot eliminate it.
+</p>
+<p><strong>Warning:</strong> When one case is intended to fall through to the
+next, write a comment like &lsquo;<samp>falls through</samp>&rsquo; to say it&rsquo;s
+intentional.  That way, other programmers won&rsquo;t assume it was an error
+and &ldquo;fix&rdquo; it erroneously.
+</p>
+<p>Consecutive <code>case</code> statements could, pedantically, be considered
+an instance of falling through, but we don&rsquo;t consider or treat them that
+way because they won&rsquo;t confuse anyone.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="switch-Example.html" accesskey="n" rel="next">switch Example</a>, Previous: <a href="Loop-Statements.html" accesskey="p" rel="prev">Loop Statements</a>, Up: <a href="Statements.html" accesskey="u" rel="up">Statements</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/volatile.html
===================================================================
--- public/doc/gnu-c/volatile.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/volatile.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,133 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>volatile (GNU C Language Manual)</title>
+
+<meta name="description" content="volatile (GNU C Language Manual)">
+<meta name="keywords" content="volatile (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Type-Qualifiers.html" rel="up" title="Type Qualifiers">
+<link href="restrict-Pointers.html" rel="next" title="restrict Pointers">
+<link href="const.html" rel="prev" title="const">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="volatile"></span><div class="header">
+<p>
+Next: <a href="restrict-Pointers.html" accesskey="n" rel="next">restrict Pointers</a>, Previous: <a href="const.html" accesskey="p" rel="prev">const</a>, Up: <a href="Type-Qualifiers.html" accesskey="u" rel="up">Type Qualifiers</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>
+</div>
+<hr>
+<span id="volatile-Variables-and-Fields"></span><h3 class="section">21.2 <code>volatile</code> Variables and Fields</h3>
+<span id="index-volatile-variables-and-fields"></span>
+<span id="index-variables_002c-volatile"></span>
+<span id="index-volatile"></span>
+
+<p>The GNU C compiler often performs optimizations that eliminate the
+need to write or read a variable.  For instance,
+</p>
+<div class="example">
+<pre class="example">int foo;
+foo = 1;
+foo++;
+</pre></div>
+
+<p>might simply store the value 2 into <code>foo</code>, without ever storing 1.
+These optimizations can also apply to structure fields in some cases.
+</p>
+<p>If the memory containing <code>foo</code> is shared with another program,
+or if it is examined asynchronously by hardware, such optimizations
+could confuse the communication.  Using <code>volatile</code> is one way
+to prevent them.
+</p>
+<p>Writing <code>volatile</code> with the type in a variable or field declaration
+says that the value may be examined or changed for reasons outside the
+control of the program at any moment.  Therefore, the program must
+execute in a careful way to assure correct interaction with those
+accesses, whenever they may occur.
+</p>
+<p>The simplest use looks like this:
+</p>
+<div class="example">
+<pre class="example">volatile int lock;
+</pre></div>
+
+<p>This directs the compiler not to do certain common optimizations on
+use of the variable <code>lock</code>.  All the reads and writes for a volatile
+variable or field are really done, and done in the order specified
+by the source code.  Thus, this code:
+</p>
+<div class="example">
+<pre class="example">lock = 1;
+list = list-&gt;next;
+if (lock)
+  lock_broken (&amp;lock);
+lock = 0;
+</pre></div>
+
+<p>really stores the value 1 in <code>lock</code>, even though there is no
+sign it is really used, and the <code>if</code> statement reads and
+checks the value of <code>lock</code>, rather than assuming it is still 1.
+</p>
+<p>A limited amount of optimization can be done, in principle, on
+<code>volatile</code> variables and fields: multiple references between two
+sequence points (see <a href="Sequence-Points.html">Sequence Points</a>) can be simplified together.
+</p>
+<p>Use of <code>volatile</code> does not eliminate the flexibility in ordering
+the computation of the operands of most operators.  For instance, in
+<code>lock + foo ()</code>, the order of accessing <code>lock</code> and calling
+<code>foo</code> is not specified, so they may be done in either order; the
+fact that <code>lock</code> is <code>volatile</code> has no effect on that.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="restrict-Pointers.html" accesskey="n" rel="next">restrict Pointers</a>, Previous: <a href="const.html" accesskey="p" rel="prev">const</a>, Up: <a href="Type-Qualifiers.html" accesskey="u" rel="up">Type Qualifiers</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>
+</div>
+
+
+
+</body>
+</html>
Index: public/doc/gnu-c/while-Statement.html
===================================================================
--- public/doc/gnu-c/while-Statement.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
+++ public/doc/gnu-c/while-Statement.html	(revision 02598c2223e9c281dafee1928b00d0fa25a8774a)
@@ -0,0 +1,100 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
+
+(The work of Trevis Rothwell and Nelson Beebe has been assigned or
+licensed to the FSF.)
+
+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; with the
+Invariant Sections being "GNU General Public License," with the
+Front-Cover Texts being "A GNU Manual," and with the Back-Cover
+Texts as in (a) below.  A copy of the license is included in the
+section entitled "GNU Free Documentation License."
+
+(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom." -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>while Statement (GNU C Language Manual)</title>
+
+<meta name="description" content="while Statement (GNU C Language Manual)">
+<meta name="keywords" content="while Statement (GNU C Language Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html" rel="start" title="Top">
+<link href="Symbol-Index.html" rel="index" title="Symbol Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Loop-Statements.html" rel="up" title="Loop Statements">
+<link href="do_002dwhile-Statement.html" rel="next" title="do-while Statement">
+<link href="Loop-Statements.html" rel="prev" title="Loop Statements">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {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}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<span id="while-Statement"></span><div class="header">
+<p>
+Next: <a href="do_002dwhile-Statement.html" accesskey="n" rel="next">do-while Statement</a>, Up: <a href="Loop-Statements.html" accesskey="u" rel="up">Loop Statements</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>
+</div>
+<hr>
+<span id="while-Statement-1"></span><h4 class="subsection">19.6.1 <code>while</code> Statement</h4>
+<span id="index-while-statement"></span>
+<span id="index-statement_002c-while"></span>
+<span id="index-while"></span>
+
+<p>The <code>while</code> statement is the simplest loop construct.
+It looks like this:
+</p>
+<div class="example">
+<pre class="example">while (<var>test</var>)
+  <var>body</var>
+</pre></div>
+
+<p>Here, <var>body</var> is a statement (often a nested block) to repeat, and
+<var>test</var> is the test expression that controls whether to repeat it again.
+Each iteration of the loop starts by computing <var>test</var> and, if it
+is true (nonzero), that means the loop should execute <var>body</var> again
+and then start over.
+</p>
+<p>Here&rsquo;s an example of advancing to the last structure in a chain of
+structures chained through the <code>next</code> field:
+</p>
+<div class="example">
+<pre class="example">#include &lt;stddef.h&gt; /* <span class="roman">Defines <code>NULL</code>.</span> */
+<span class="roman">&hellip;</span>
+while (chain-&gt;next != NULL)
+  chain = chain-&gt;next;
+</pre></div>
+
+<p>This code assumes the chain isn&rsquo;t empty to start with; if the chain is
+empty (that is, if <code>chain</code> is a null pointer), the code gets a
+<code>SIGSEGV</code> signal trying to dereference that null pointer (see <a href="Signals.html">Signals</a>).
+</p>
+
+
+
+</body>
+</html>
