mirror of
https://github.com/boostorg/preprocessor.git
synced 2025-07-05 08:46:31 +02:00
97 lines
3.3 KiB
HTML
97 lines
3.3 KiB
HTML
![]() |
<a href="../index.htm"><IMG height=86
|
|||
|
alt="c++boost.gif (8819 bytes)"
|
|||
|
src="../../../../c++boost.gif"
|
|||
|
width=277 align=center></a>
|
|||
|
<hr>
|
|||
|
<!-- Generated by Doxygen 1.2.12 -->
|
|||
|
<center>
|
|||
|
<a class="qindex" href="index.html">Main Page</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="globals.html">File Members</a> </center>
|
|||
|
<hr><h1>cat.hpp File Reference</h1><table border=0 cellpadding=0 cellspacing=0>
|
|||
|
<tr><td colspan=2><br><h2>Defines</h2></td></tr>
|
|||
|
<tr><td nowrap align=right valign=top>#define </td><td valign=bottom><a class="el" href="cat_8hpp.html#a0">BOOST_PREPROCESSOR_CAT</a>(L, R)</td></tr>
|
|||
|
<tr><td> </td><td><font size=-1><em>Delays the catenation of L and R.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
|
|||
|
</table>
|
|||
|
<hr><a name="_details"></a><h2>Detailed Description</h2>
|
|||
|
<a href="../../../../boost/preprocessor/cat.hpp">Click here to see the header.</a>
|
|||
|
<p>
|
|||
|
<hr><h2>Define Documentation</h2>
|
|||
|
<a name="a0" doxytag="cat.hpp::BOOST_PREPROCESSOR_CAT"></a><p>
|
|||
|
<table width="100%" cellpadding="2" cellspacing="0" border="0">
|
|||
|
<tr>
|
|||
|
<td class="md">
|
|||
|
<table cellpadding="0" cellspacing="0" border="0">
|
|||
|
<tr>
|
|||
|
<td class="md" nowrap valign="top"> #define BOOST_PREPROCESSOR_CAT</td>
|
|||
|
<td class="md" valign="top">( </td>
|
|||
|
<td class="md" nowrap valign="top">L, <tr>
|
|||
|
<td></td>
|
|||
|
<td></td>
|
|||
|
<td class="md" nowrap>R </td>
|
|||
|
<td class="mdname1" valign="top" nowrap> </td>
|
|||
|
<td class="md" valign="top">) </td>
|
|||
|
<td class="md" nowrap>
|
|||
|
</table>
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
</table>
|
|||
|
<table cellspacing=5 cellpadding=0 border=0>
|
|||
|
<tr>
|
|||
|
<td>
|
|||
|
|
|||
|
</td>
|
|||
|
<td>
|
|||
|
|
|||
|
<p>
|
|||
|
Delays the catenation of L and R.
|
|||
|
<p>
|
|||
|
Example:
|
|||
|
<p>
|
|||
|
<pre><div class="fragment"><pre>
|
|||
|
#define STATIC_ASSERT(EXPR)\
|
|||
|
enum\
|
|||
|
{ BOOST_PREPROCESSOR_CAT(static_check_,__LINE__) = (EXPR) ? 1 : -1\
|
|||
|
};\
|
|||
|
typedef char\
|
|||
|
BOOST_PREPROCESSOR_CAT(static_assert_,__LINE__)\
|
|||
|
[ BOOST_PREPROCESSOR_CAT(static_check_,__LINE__)\
|
|||
|
]
|
|||
|
|
|||
|
// ...
|
|||
|
|
|||
|
STATIC_ASSERT(sizeof(int) <= sizeof(long));
|
|||
|
</pre></div></pre>
|
|||
|
<p>
|
|||
|
The above expands to:
|
|||
|
<p>
|
|||
|
<pre><div class="fragment"><pre>
|
|||
|
enum
|
|||
|
{ static_check_152 = (sizeof(int) <= sizeof(long)) ? 1 : -1
|
|||
|
};
|
|||
|
typedef char
|
|||
|
static_assert_152
|
|||
|
[ static_check_152
|
|||
|
];
|
|||
|
</pre></div></pre>
|
|||
|
<p>
|
|||
|
Using <a class="el" href="cat_8hpp.html#a0">BOOST_PREPROCESSOR_CAT</a>() above lets the preprocessor expand the __LINE__. If the above code would use the ## operator directly then __LINE__ would not be expanded and the above would expand to:
|
|||
|
<p>
|
|||
|
<pre><div class="fragment"><pre>
|
|||
|
enum
|
|||
|
{ static_check___LINE__ = (sizeof(int) <= sizeof(long)) ? 1 : -1
|
|||
|
};
|
|||
|
typedef char
|
|||
|
static_assert___LINE__
|
|||
|
[ static_check___LINE__
|
|||
|
];
|
|||
|
</pre></div></pre> </td>
|
|||
|
</tr>
|
|||
|
</table>
|
|||
|
<hr>
|
|||
|
<p><EFBFBD> Copyright Housemarque, Inc. 2001</p>
|
|||
|
<p>Permission to copy, use, modify, sell and distribute this document is granted
|
|||
|
provided this copyright notice appears in all copies. This document is provided
|
|||
|
"as is" without express or implied warranty, and with no claim as to its suitability
|
|||
|
for any purpose. </p>
|
|||
|
|
|||
|
<p>Generated: <!--webbot bot="Timestamp" s-type="EDITED" s-format="%d %b %Y" startspan --><!--webbot bot="Timestamp" endspan i-checksum="15246" --></p>
|