1 |
742 |
jeremybenn |
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
2 |
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
|
3 |
|
|
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Macros</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><meta name="keywords" content=" ISO C++ , runtime , library "/><link rel="home" href="../index.html" title="The GNU C++ Library"/><link rel="up" href="using.html" title="Chapter 3. Using"/><link rel="prev" href="using_headers.html" title="Headers"/><link rel="next" href="using_namespaces.html" title="Namespaces"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Macros</th></tr><tr><td align="left"><a accesskey="p" href="using_headers.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Using</th><td align="right"> <a accesskey="n" href="using_namespaces.html">Next</a></td></tr></table><hr/></div><div class="section" title="Macros"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.using.macros"/>Macros</h2></div></div></div><p>
|
4 |
|
|
All library macros begin with <code class="code">_GLIBCXX_</code>.
|
5 |
|
|
</p><p>
|
6 |
|
|
Furthermore, all pre-processor macros, switches, and
|
7 |
|
|
configuration options are gathered in the
|
8 |
|
|
file <code class="filename">c++config.h</code>, which
|
9 |
|
|
is generated during the libstdc++ configuration and build
|
10 |
|
|
process. This file is then included when needed by files part of
|
11 |
|
|
the public libstdc++ API, like <ios>. Most of these macros
|
12 |
|
|
should not be used by consumers of libstdc++, and are reserved
|
13 |
|
|
for internal implementation use. <span class="emphasis"><em>These macros cannot
|
14 |
|
|
be redefined</em></span>.
|
15 |
|
|
</p><p>
|
16 |
|
|
A select handful of macros control libstdc++ extensions and extra
|
17 |
|
|
features, or provide versioning information for the API. Only
|
18 |
|
|
those macros listed below are offered for consideration by the
|
19 |
|
|
general public.
|
20 |
|
|
</p><p>Below is the macro which users may check for library version
|
21 |
|
|
information. </p><div class="variablelist"><dl><dt><span class="term"><code class="code">__GLIBCXX__</code></span></dt><dd><p>The current version of
|
22 |
|
|
libstdc++ in compressed ISO date format, form of an unsigned
|
23 |
|
|
long. For details on the value of this particular macro for a
|
24 |
|
|
particular release, please consult this <a class="link" href="abi.html" title="ABI Policy and Guidelines">
|
25 |
|
|
document</a>.
|
26 |
|
|
</p></dd></dl></div><p>Below are the macros which users may change with #define/#undef or
|
27 |
|
|
with -D/-U compiler flags. The default state of the symbol is
|
28 |
|
|
listed.</p><p><span class="quote">“<span class="quote">Configurable</span>”</span> (or <span class="quote">“<span class="quote">Not configurable</span>”</span>) means
|
29 |
|
|
that the symbol is initially chosen (or not) based on
|
30 |
|
|
--enable/--disable options at library build and configure time
|
31 |
|
|
(documented <a class="link" href="configure.html" title="Configure">here</a>), with the
|
32 |
|
|
various --enable/--disable choices being translated to
|
33 |
|
|
#define/#undef).
|
34 |
|
|
</p><p> <acronym class="acronym">ABI</acronym> means that changing from the default value may
|
35 |
|
|
mean changing the <acronym class="acronym">ABI</acronym> of compiled code. In other words, these
|
36 |
|
|
choices control code which has already been compiled (i.e., in a
|
37 |
|
|
binary such as libstdc++.a/.so). If you explicitly #define or
|
38 |
|
|
#undef these macros, the <span class="emphasis"><em>headers</em></span> may see different code
|
39 |
|
|
paths, but the <span class="emphasis"><em>libraries</em></span> which you link against will not.
|
40 |
|
|
Experimenting with different values with the expectation of
|
41 |
|
|
consistent linkage requires changing the config headers before
|
42 |
|
|
building/installing the library.
|
43 |
|
|
</p><div class="variablelist"><dl><dt><span class="term"><code class="code">_GLIBCXX_USE_DEPRECATED</code></span></dt><dd><p>
|
44 |
|
|
Defined by default. Not configurable. ABI-changing. Turning this off
|
45 |
|
|
removes older ARM-style iostreams code, and other anachronisms
|
46 |
|
|
from the API. This macro is dependent on the version of the
|
47 |
|
|
standard being tracked, and as a result may give different results for
|
48 |
|
|
<code class="code">-std=c++98</code> and <code class="code">-std=c++11</code>. This may
|
49 |
|
|
be useful in updating old C++ code which no longer meet the
|
50 |
|
|
requirements of the language, or for checking current code
|
51 |
|
|
against new language standards.
|
52 |
|
|
</p></dd><dt><span class="term"><code class="code">_GLIBCXX_FORCE_NEW</code></span></dt><dd><p>
|
53 |
|
|
Undefined by default. When defined, memory allocation and
|
54 |
|
|
allocators controlled by libstdc++ call operator new/delete
|
55 |
|
|
without caching and pooling. Configurable via
|
56 |
|
|
<code class="code">--enable-libstdcxx-allocator</code>. ABI-changing.
|
57 |
|
|
</p></dd><dt><span class="term"><code class="code">_GLIBCXX_CONCEPT_CHECKS</code></span></dt><dd><p>
|
58 |
|
|
Undefined by default. Configurable via
|
59 |
|
|
<code class="code">--enable-concept-checks</code>. When defined, performs
|
60 |
|
|
compile-time checking on certain template instantiations to
|
61 |
|
|
detect violations of the requirements of the standard. This
|
62 |
|
|
is described in more detail <a class="link" href="ext_compile_checks.html" title="Chapter 16. Compile Time Checks">here</a>.
|
63 |
|
|
</p></dd><dt><span class="term"><code class="code">_GLIBCXX_DEBUG</code></span></dt><dd><p>
|
64 |
|
|
Undefined by default. When defined, compiles user code using
|
65 |
|
|
the <a class="link" href="debug_mode.html" title="Chapter 17. Debug Mode">debug mode</a>.
|
66 |
|
|
</p></dd><dt><span class="term"><code class="code">_GLIBCXX_DEBUG_PEDANTIC</code></span></dt><dd><p>
|
67 |
|
|
Undefined by default. When defined while compiling with
|
68 |
|
|
the <a class="link" href="debug_mode.html" title="Chapter 17. Debug Mode">debug mode</a>, makes
|
69 |
|
|
the debug mode extremely picky by making the use of libstdc++
|
70 |
|
|
extensions and libstdc++-specific behavior into errors.
|
71 |
|
|
</p></dd><dt><span class="term"><code class="code">_GLIBCXX_PARALLEL</code></span></dt><dd><p>Undefined by default. When defined, compiles user code
|
72 |
|
|
using the <a class="link" href="parallel_mode.html" title="Chapter 18. Parallel Mode">parallel
|
73 |
|
|
mode</a>.
|
74 |
|
|
</p></dd><dt><span class="term"><code class="code">_GLIBCXX_PROFILE</code></span></dt><dd><p>Undefined by default. When defined, compiles user code
|
75 |
|
|
using the <a class="link" href="profile_mode.html" title="Chapter 19. Profile Mode">profile
|
76 |
|
|
mode</a>.
|
77 |
|
|
</p></dd></dl></div></div><div class="navfooter"><hr/><table width="100%" summary="Navigation footer"><tr><td align="left"><a accesskey="p" href="using_headers.html">Prev</a> </td><td align="center"><a accesskey="u" href="using.html">Up</a></td><td align="right"> <a accesskey="n" href="using_namespaces.html">Next</a></td></tr><tr><td align="left" valign="top">Headers </td><td align="center"><a accesskey="h" href="../index.html">Home</a></td><td align="right" valign="top"> Namespaces</td></tr></table></div></body></html>
|