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