source: public/doc/gnu-c/Labels-as-Values.html@ 02598c2

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

Add gnu-c

  • Property mode set to 100644
File size: 4.7 KB
Line 
1<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2<html>
3<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
4
5(The work of Trevis Rothwell and Nelson Beebe has been assigned or
6licensed to the FSF.)
7
8Permission is granted to copy, distribute and/or modify this document
9under the terms of the GNU Free Documentation License, Version 1.3 or
10any later version published by the Free Software Foundation; with the
11Invariant Sections being "GNU General Public License," with the
12Front-Cover Texts being "A GNU Manual," and with the Back-Cover
13Texts as in (a) below. A copy of the license is included in the
14section entitled "GNU Free Documentation License."
15
16(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
17modify this GNU manual. Buying copies from the FSF supports it in
18developing GNU and promoting software freedom." -->
19<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
20<head>
21<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
22<title>Labels as Values (GNU C Language Manual)</title>
23
24<meta name="description" content="Labels as Values (GNU C Language Manual)">
25<meta name="keywords" content="Labels as Values (GNU C Language Manual)">
26<meta name="resource-type" content="document">
27<meta name="distribution" content="global">
28<meta name="Generator" content="makeinfo">
29<link href="index.html" rel="start" title="Top">
30<link href="Symbol-Index.html" rel="index" title="Symbol Index">
31<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
32<link href="Statements.html" rel="up" title="Statements">
33<link href="Label-Value-Uses.html" rel="next" title="Label Value Uses">
34<link href="Local-Labels.html" rel="prev" title="Local Labels">
35<style type="text/css">
36<!--
37a.summary-letter {text-decoration: none}
38blockquote.indentedblock {margin-right: 0em}
39div.display {margin-left: 3.2em}
40div.example {margin-left: 3.2em}
41div.lisp {margin-left: 3.2em}
42kbd {font-style: oblique}
43pre.display {font-family: inherit}
44pre.format {font-family: inherit}
45pre.menu-comment {font-family: serif}
46pre.menu-preformatted {font-family: serif}
47span.nolinebreak {white-space: nowrap}
48span.roman {font-family: initial; font-weight: normal}
49span.sansserif {font-family: sans-serif; font-weight: normal}
50ul.no-bullet {list-style: none}
51-->
52</style>
53
54
55</head>
56
57<body lang="en">
58<span id="Labels-as-Values"></span><div class="header">
59<p>
60Next: <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>
61</div>
62<hr>
63<span id="Labels-as-Values-1"></span><h3 class="section">19.14 Labels as Values</h3>
64<span id="index-labels-as-values"></span>
65<span id="index-computed-gotos"></span>
66<span id="index-goto-with-computed-label"></span>
67<span id="index-address-of-a-label"></span>
68
69<p>In GNU C, you can get the address of a label defined in the current
70function (or a local label defined in the containing function) with
71the unary operator &lsquo;<samp>&amp;&amp;</samp>&rsquo;. The value has type <code>void *</code>. This
72value is a constant and can be used wherever a constant of that type
73is valid. For example:
74</p>
75<div class="example">
76<pre class="example">void *ptr;
77<span class="roman">&hellip;</span>
78ptr = &amp;&amp;foo;
79</pre></div>
80
81<p>To use these values requires a way to jump to one. This is done
82with the computed goto statement<a id="DOCF5" href="#FOOT5"><sup>5</sup></a>, <code>goto *<var>exp</var>;</code>. For example,
83</p>
84<div class="example">
85<pre class="example">goto *ptr;
86</pre></div>
87
88<p>Any expression of type <code>void *</code> is allowed.
89</p>
90<p>See <a href="goto-Statement.html">goto Statement</a>.
91</p>
92<table class="menu" border="0" cellspacing="0">
93<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.
94</td></tr>
95<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.
96</td></tr>
97</table>
98
99<div class="footnote">
100<hr>
101<h4 class="footnotes-heading">Footnotes</h4>
102
103<h5><a id="FOOT5" href="#DOCF5">(5)</a></h3>
104<p>The analogous feature in
105Fortran is called an assigned goto, but that name seems inappropriate in
106C, since you can do more with label addresses than store them in special label
107variables.</p>
108</div>
109
110
111
112</body>
113</html>
Note: See TracBrowser for help on using the repository browser.