mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			95 lines
		
	
	
		
			8.5 KiB
		
	
	
	
		
			HTML
		
	
	
	
			
		
		
	
	
			95 lines
		
	
	
		
			8.5 KiB
		
	
	
	
		
			HTML
		
	
	
	
| <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 | ||
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Macros</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.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_dual_abi.html" title="Dual ABI" /></head><body><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_dual_abi.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.using.macros"></a>Macros</h2></div></div></div><p>
 | ||
|      All library macros begin with <code class="code">_GLIBCXX_</code>.
 | ||
|    </p><p>
 | ||
|      Furthermore, all pre-processor macros, switches, and
 | ||
|       configuration options are gathered in the
 | ||
|       file <code class="filename">c++config.h</code>, which
 | ||
|       is generated during the libstdc++ configuration and build
 | ||
|       process. This file is then included when needed by files part of
 | ||
|       the public libstdc++ API, like
 | ||
|       <code class="filename"><ios></code>. Most of these
 | ||
|       macros should not be used by consumers of libstdc++, and are reserved
 | ||
|       for internal implementation use. <span class="emphasis"><em>These macros cannot
 | ||
|       be redefined</em></span>.
 | ||
|    </p><p>
 | ||
|      A select handful of macros control libstdc++ extensions and extra
 | ||
|       features, or provide versioning information for the API.  Only
 | ||
|       those macros listed below are offered for consideration by the
 | ||
|       general public.
 | ||
|    </p><p>Below is the macro which users may check for library version
 | ||
|       information. </p><div class="variablelist"><dl class="variablelist"><dt><span class="term"><code class="code">__GLIBCXX__</code></span></dt><dd><p>The current version of
 | ||
|     libstdc++ in compressed ISO date format, as an unsigned
 | ||
|     long. For details on the value of this particular macro for a
 | ||
|     particular release, please consult the <a class="link" href="abi.html" title="ABI Policy and Guidelines">
 | ||
|     ABI Policy and Guidelines</a> appendix.
 | ||
|     </p></dd></dl></div><p>Below are the macros which users may change with #define/#undef or
 | ||
|       with -D/-U compiler flags.  The default state of the symbol is
 | ||
|       listed.</p><p><span class="quote">“<span class="quote">Configurable</span>”</span> (or <span class="quote">“<span class="quote">Not configurable</span>”</span>) means
 | ||
|       that the symbol is initially chosen (or not) based on
 | ||
|       --enable/--disable options at library build and configure time
 | ||
|       (documented in
 | ||
|       <a class="link" href="configure.html" title="Configure">Configure</a>),
 | ||
|       with the various --enable/--disable choices being translated to
 | ||
|       #define/#undef).
 | ||
|    </p><p> <acronym class="acronym">ABI</acronym> means that changing from the default value may
 | ||
|   mean changing the <acronym class="acronym">ABI</acronym> of compiled code. In other words,
 | ||
|   these choices control code which has already been compiled (i.e., in a
 | ||
|   binary such as libstdc++.a/.so).  If you explicitly #define or
 | ||
|   #undef these macros, the <span class="emphasis"><em>headers</em></span> may see different code
 | ||
|   paths, but the <span class="emphasis"><em>libraries</em></span> which you link against will not.
 | ||
|   Experimenting with different values with the expectation of
 | ||
|   consistent linkage requires changing the config headers before
 | ||
|   building/installing the library.
 | ||
|    </p><div class="variablelist"><dl class="variablelist"><dt><span class="term"><code class="code">_GLIBCXX_USE_DEPRECATED</code></span></dt><dd><p>
 | ||
| 	Defined by default. Not configurable. ABI-changing. Turning this off
 | ||
| 	removes older ARM-style iostreams code, and other anachronisms
 | ||
| 	from the API.  This macro is dependent on the version of the
 | ||
| 	standard being tracked, and as a result may give different results for
 | ||
| 	<code class="code">-std=c++98</code> and <code class="code">-std=c++11</code>. This may
 | ||
| 	be useful in updating old C++ code which no longer meet the
 | ||
| 	requirements of the language, or for checking current code
 | ||
| 	against new language standards.
 | ||
|     </p></dd><dt><span class="term"><code class="code">_GLIBCXX_USE_CXX11_ABI</code></span></dt><dd><p>
 | ||
|         Defined to the value <code class="literal">1</code> by default.
 | ||
|         Configurable via  <code class="code">--disable-libstdcxx-dual-abi</code>
 | ||
|         and/or <code class="code">--with-default-libstdcxx-abi</code>.
 | ||
|         ABI-changing.
 | ||
|         When defined to a non-zero value the library headers will use the
 | ||
|         new C++11-conforming ABI introduced in GCC 5, rather than the older
 | ||
|         ABI introduced in GCC 3.4. This changes the definition of several
 | ||
|         class templates, including <code class="classname">std:string</code>,
 | ||
|         <code class="classname">std::list</code> and some locale facets.
 | ||
|         For more details see <a class="xref" href="using_dual_abi.html" title="Dual ABI">Dual ABI</a>.
 | ||
|     </p></dd><dt><span class="term"><code class="code">_GLIBCXX_CONCEPT_CHECKS</code></span></dt><dd><p>
 | ||
| 	Undefined by default.  Configurable via
 | ||
| 	<code class="code">--enable-concept-checks</code>.  When defined, performs
 | ||
| 	compile-time checking on certain template instantiations to
 | ||
| 	detect violations of the requirements of the standard.  This
 | ||
| 	macro has no effect for freestanding implementations.
 | ||
| 	This is described in more detail in
 | ||
| 	<a class="link" href="ext_compile_checks.html" title="Chapter 16. Compile Time Checks">Compile Time Checks</a>.
 | ||
|       </p></dd><dt><span class="term"><code class="code">_GLIBCXX_ASSERTIONS</code></span></dt><dd><p>
 | ||
| 	Undefined by default. When defined, enables extra error checking in
 | ||
|         the form of precondition assertions, such as bounds checking in
 | ||
|         strings and null pointer checks when dereferencing smart pointers.
 | ||
|       </p></dd><dt><span class="term"><code class="code">_GLIBCXX_DEBUG</code></span></dt><dd><p>
 | ||
| 	Undefined by default. When defined, compiles user code using
 | ||
| 	the <a class="link" href="debug_mode.html" title="Chapter 17. Debug Mode">debug mode</a>.
 | ||
|         When defined, <code class="code">_GLIBCXX_ASSERTIONS</code> is defined
 | ||
|         automatically, so all the assertions enabled by that macro are also
 | ||
|         enabled in debug mode.
 | ||
|       </p></dd><dt><span class="term"><code class="code">_GLIBCXX_DEBUG_PEDANTIC</code></span></dt><dd><p>
 | ||
| 	Undefined by default. When defined while compiling with
 | ||
| 	the <a class="link" href="debug_mode.html" title="Chapter 17. Debug Mode">debug mode</a>, makes
 | ||
| 	the debug mode extremely picky by making the use of libstdc++
 | ||
| 	extensions and libstdc++-specific behavior into errors.
 | ||
|       </p></dd><dt><span class="term"><code class="code">_GLIBCXX_PARALLEL</code></span></dt><dd><p>Undefined by default. When defined, compiles user code
 | ||
| 	using the <a class="link" href="parallel_mode.html" title="Chapter 18. Parallel Mode">parallel
 | ||
| 	mode</a>.
 | ||
|       </p></dd><dt><span class="term"><code class="code">_GLIBCXX_PROFILE</code></span></dt><dd><p>Undefined by default. When defined, compiles user code
 | ||
| 	using the <a class="link" href="profile_mode.html" title="Chapter 19. Profile Mode">profile
 | ||
| 	mode</a>.
 | ||
|       </p></dd><dt><span class="term"><code class="code">__STDCPP_WANT_MATH_SPEC_FUNCS__</code></span></dt><dd><p>Undefined by default. When defined to a non-zero integer constant,
 | ||
| 	enables support for ISO/IEC 29124 Special Math Functions.
 | ||
|       </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_dual_abi.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"> Dual ABI</td></tr></table></div></body></html> |