File: cstdint.html

package info (click to toggle)
boost1.42 1.42.0-4
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 277,864 kB
  • ctags: 401,076
  • sloc: cpp: 1,235,659; xml: 74,142; ansic: 41,313; python: 26,756; sh: 11,840; cs: 2,118; makefile: 655; perl: 494; yacc: 456; asm: 353; csh: 6
file content (257 lines) | stat: -rw-r--r-- 14,613 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Standard Integer Types</title>
<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
<link rel="home" href="../index.html" title="Boost.Integer">
<link rel="up" href="../index.html" title="Boost.Integer">
<link rel="prev" href="../index.html" title="Boost.Integer">
<link rel="next" href="traits.html" title="Integer Traits">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
<td align="center"><a href="../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="../index.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="traits.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="boost_integer.cstdint"></a><a class="link" href="cstdint.html" title="Standard Integer Types"> Standard Integer Types</a>
</h2></div></div></div>
<div class="toc"><dl>
<dt><span class="section"><a href="cstdint.html#boost_integer.cstdint.overview">Overview</a></span></dt>
<dt><span class="section"><a href="cstdint.html#boost_integer.cstdint.rationale"> Rationale</a></span></dt>
<dt><span class="section"><a href="cstdint.html#boost_integer.cstdint.ce"> <span class="emphasis"><em>Caveat emptor</em></span></a></span></dt>
<dt><span class="section"><a href="cstdint.html#boost_integer.cstdint.exact_width_integer_types">Exact-width
      integer types</a></span></dt>
<dt><span class="section"><a href="cstdint.html#boost_integer.cstdint.minimum_width_integer_types">Minimum-width
      integer types</a></span></dt>
<dt><span class="section"><a href="cstdint.html#boost_integer.cstdint.fastest_minimum_width_integer_types">Fastest
      minimum-width integer types</a></span></dt>
<dt><span class="section"><a href="cstdint.html#boost_integer.cstdint.greatest_width_integer_types">Greatest-width
      integer types</a></span></dt>
<dt><span class="section"><a href="cstdint.html#boost_integer.cstdint.integer_constant_macros">Integer
      Constant Macros</a></span></dt>
</dl></div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_integer.cstdint.overview"></a><a class="link" href="cstdint.html#boost_integer.cstdint.overview" title="Overview">Overview</a>
</h3></div></div></div>
<p>
        The header <code class="literal"><a href="../../../../../boost/cstdint.hpp" target="_top">&lt;boost/cstdint.hpp&gt;</a></code>
        provides the typedef's useful for writing portable code that requires certain
        integer widths. All typedef's are in namespace boost.
      </p>
<p>
        The specifications for these types are based on the ISO/IEC 9899:1999 C Language
        standard header &lt;stdint.h&gt;. The 64-bit types required by the C standard
        are <span class="emphasis"><em>not required</em></span> in the boost header, and may not be
        supplied for all platforms/compilers, because <code class="literal">long long</code>
        is not [yet] included in the C++ standard.
      </p>
<p>
        See <a href="../../../test/cstdint_test.cpp" target="_top">cstdint_test.cpp</a> for
        a test program.
      </p>
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_integer.cstdint.rationale"></a><a class="link" href="cstdint.html#boost_integer.cstdint.rationale" title="Rationale"> Rationale</a>
</h3></div></div></div>
<p>
        The organization of the Boost.Integer headers and classes is designed to
        take advantage of &lt;stdint.h&gt; types from the 1999 C standard without
        causing undefined behavior in terms of the 1998 C++ standard. The header
        &lt;boost/cstdint.hpp&gt; makes the standard integer types safely available
        in namespace <code class="literal">boost</code> without placing any names in namespace
        <code class="literal">std</code>. The intension is to complement rather than compete
        with the C++ Standard Library. Should some future C++ standard include &lt;stdint.h&gt;
        and &lt;cstdint&gt;, then &lt;boost/cstdint.hpp&gt; will continue to function,
        but will become redundant and may be safely deprecated.
      </p>
<p>
        Because these are boost headers, their names conform to boost header naming
        conventions rather than C++ Standard Library header naming conventions.
      </p>
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_integer.cstdint.ce"></a><a class="link" href="cstdint.html#boost_integer.cstdint.ce" title="Caveat emptor"> <span class="emphasis"><em>Caveat emptor</em></span></a>
</h3></div></div></div>
<p>
        As an implementation artifact, certain C &lt;limits.h&gt; macro names may
        possibly be visible to users of &lt;boost/cstdint.hpp&gt;. Don't use these
        macros; they are not part of any Boost-specified interface. Use <code class="literal">boost::integer_traits&lt;&gt;</code>
        or <code class="literal">std::numeric_limits&lt;&gt;</code> instead.
      </p>
<p>
        As another implementation artifact, certain C &lt;stdint.h&gt; typedef names
        may possibly be visible in the global namespace to users of &lt;boost/cstdint.hpp&gt;.
        Don't use these names, they are not part of any Boost-specified interface.
        Use the respective names in namespace <code class="literal">boost</code> instead.
      </p>
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_integer.cstdint.exact_width_integer_types"></a><a class="link" href="cstdint.html#boost_integer.cstdint.exact_width_integer_types" title="Exact-width integer types">Exact-width
      integer types</a>
</h3></div></div></div>
<p>
        The typedef <code class="literal">int#_t</code>, with # replaced by the width, designates
        a signed integer type of exactly # bits; for example <code class="literal">int8_t</code>
        denotes an 8-bit signed integer type. Similarly, the typedef <code class="literal">uint#_t</code>
        designates an unsigned integer type of exactly # bits.
      </p>
<p>
        These types are optional. However, if a platform supports integer types with
        widths of 8, 16, 32, 64, or any combination thereof, then &lt;boost/cstdint.hpp&gt;
        does provide the corresponding typedefs.
      </p>
<p>
        The absence of int64_t and uint64_t is indicated by the macro <code class="computeroutput"><span class="identifier">BOOST_NO_INT64_T</span></code>.
      </p>
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_integer.cstdint.minimum_width_integer_types"></a><a class="link" href="cstdint.html#boost_integer.cstdint.minimum_width_integer_types" title="Minimum-width integer types">Minimum-width
      integer types</a>
</h3></div></div></div>
<p>
        The typedef <code class="literal">int_least#_t</code>, with # replaced by the width,
        designates a signed integer type with a width of at least # bits, such that
        no signed integer type with lesser size has at least the specified width.
        Thus, <code class="literal">int_least32_t</code> denotes the smallest signed integer
        type with a width of at least 32 bits. Similarly, the typedef name <code class="literal">uint_least#_t</code>
        designates an unsigned integer type with a width of at least # bits, such
        that no unsigned integer type with lesser size has at least the specified
        width.
      </p>
<p>
        The following minimum-width integer types are provided for all platforms:
      </p>
<div class="itemizedlist"><ul type="disc">
<li><code class="literal">int_least8_t</code></li>
<li><code class="literal">int_least16_t</code></li>
<li><code class="literal">int_least32_t</code></li>
<li><code class="literal">uint_least8_t</code></li>
<li><code class="literal">uint_least16_t</code></li>
<li><code class="literal">uint_least32_t</code></li>
</ul></div>
<p>
        The following types are available only if, after including &lt;boost/cstdint.hpp&gt;,
        the macro BOOST_NO_INT64_T is not defined:
      </p>
<div class="itemizedlist"><ul type="disc">
<li><code class="literal">int_least64_t</code></li>
<li><code class="literal">uint_least64_t</code></li>
</ul></div>
<p>
        All other minimum-width integer types are optional.
      </p>
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_integer.cstdint.fastest_minimum_width_integer_types"></a><a class="link" href="cstdint.html#boost_integer.cstdint.fastest_minimum_width_integer_types" title="Fastest minimum-width integer types">Fastest
      minimum-width integer types</a>
</h3></div></div></div>
<p>
        The typedef <code class="literal">int_fast#_t</code>, with # replaced by the width,
        designates the fastest signed integer type with a width of at least # bits.
        Similarly, the typedef name <code class="literal">uint_fast#_t</code> designates the
        fastest unsigned integer type with a width of at least # bits.
      </p>
<p>
        There is no guarantee that these types are fastest for all purposes. In any
        case, however, they satisfy the signedness and width requirements.
      </p>
<p>
        The following fastest minimum-width integer types are provided for all platforms:
      </p>
<div class="itemizedlist"><ul type="disc">
<li><code class="literal">int_fast8_t</code></li>
<li><code class="literal">int_fast16_t</code></li>
<li><code class="literal">int_fast32_t</code></li>
<li><code class="literal">uint_fast8_t</code></li>
<li><code class="literal">uint_fast16_t</code></li>
<li><code class="literal">uint_fast32_t</code></li>
</ul></div>
<p>
        The following types are available only if, after including &lt;boost/cstdint.hpp&gt;,
        the macro BOOST_NO_INT64_T is not defined:
      </p>
<div class="itemizedlist"><ul type="disc">
<li><code class="literal">int_fast64_t</code></li>
<li><code class="literal">uint_fast64_t</code></li>
</ul></div>
<p>
        All other fastest minimum-width integer types are optional.
      </p>
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_integer.cstdint.greatest_width_integer_types"></a><a class="link" href="cstdint.html#boost_integer.cstdint.greatest_width_integer_types" title="Greatest-width integer types">Greatest-width
      integer types</a>
</h3></div></div></div>
<p>
        The typedef <code class="literal">intmax_t </code>designates a signed integer type
        capable of representing any value of any signed integer type.
      </p>
<p>
        The typedef <code class="literal">uintmax_t</code> designates an unsigned integer type
        capable of representing any value of any unsigned integer type.
      </p>
<p>
        These types are provided for all platforms.
      </p>
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_integer.cstdint.integer_constant_macros"></a><a class="link" href="cstdint.html#boost_integer.cstdint.integer_constant_macros" title="Integer Constant Macros">Integer
      Constant Macros</a>
</h3></div></div></div>
<p>
        The following macros are always defined after inclusion of this header, these
        allow integer constants of at least the specified width to be declared: INT8_C,
        UINT8_C, INT16_C, UINT16_C, INT32_C, UINT32_C, INTMAX_C, UINTMAX_C.
      </p>
<p>
        The macros INT64_C and UINT64_C are also defined if the the macro BOOST_NO_INT64_T
        is not defined.
      </p>
<p>
        The C99 macro __STDC_CONSTANT_MACROS is also defined as an artifact of the
        implementation.
      </p>
<p>
        For example:
      </p>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">cstdint</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>

<span class="comment">// Here the constant 0x1FFFFFFFF has the correct suffix applied:
</span><span class="keyword">static</span> <span class="keyword">const</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">uint64_t</span> <span class="identifier">c</span> <span class="special">=</span> <span class="identifier">INT64_C</span><span class="special">(</span><span class="number">0</span><span class="identifier">x1FFFFFFFF</span><span class="special">);</span> 
</pre>
</div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2001 -2009 Beman Dawes, Daryle Walker, Gennaro Prota,
      John Maddock<p>
        Distributed under the Boost Software License, Version 1.0. (See accompanying
        file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
      </p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="../index.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="traits.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
</div>
</body>
</html>