Files
preprocessor/doc/reference/cat_8hpp.html
2001-12-03 21:20:27 +00:00

97 lines
3.3 KiB
HTML
Raw Blame History

<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> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </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&nbsp;</td><td valign=bottom><a class="el" href="cat_8hpp.html#a0">BOOST_PREPROCESSOR_CAT</a>(L, R)</td></tr>
<tr><td>&nbsp;</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">(&nbsp;</td>
<td class="md" nowrap valign="top">L, <tr>
<td></td>
<td></td>
<td class="md" nowrap>R&nbsp;</td>
<td class="mdname1" valign="top" nowrap>&nbsp; </td>
<td class="md" valign="top">)&nbsp;</td>
<td class="md" nowrap>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</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) &lt;= sizeof(long));
</pre></div></pre>
<p>
The above expands to:
<p>
<pre><div class="fragment"><pre>
enum
{ static_check_152 = (sizeof(int) &lt;= 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) &lt;= sizeof(long)) ? 1 : -1
};
typedef char
static_assert___LINE__
[ static_check___LINE__
];
</pre></div></pre> </td>
</tr>
</table>
<hr>
<p><EFBFBD> Copyright Housemarque Oy 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>