Files
preprocessor/doc/reference/cat_8hpp.html
Vesa Karvonen df1244ba20 Preprocessor library is now C friendly.
[SVN r12552]
2002-01-29 14:13:10 +00:00

136 lines
4.5 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 -->
<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><a href="../../../../boost/preprocessor/cat.hpp">Click here to see the header.</a>.
<a href="#_details">More...</a>
<p>
<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_PP_CAT</a>(X, Y)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Delays the catenation of X and Y.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="cat_8hpp.html#a1">BOOST_PREPROCESSOR_CAT</a>(X, Y)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Obsolete.</em> <a href="#a1">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>
<p>
<hr><h2>Define Documentation</h2>
<a name="a0" doxytag="cat.hpp::BOOST_PP_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_PP_CAT</td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">X, <tr>
<td></td>
<td></td>
<td class="md" nowrap>Y&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 X and Y.
<p>
For example,
<p>
<pre><div class="fragment"><pre>
#define STATIC_ASSERT(EXPR)\
enum\
{ BOOST_PP_CAT(static_check_,__LINE__) = (EXPR) ? 1 : -1\
};\
typedef char\
BOOST_PP_CAT(static_assert_,__LINE__)\
[ BOOST_PP_CAT(static_check_,__LINE__)\
]
// ...
STATIC_ASSERT(sizeof(int) &lt;= sizeof(long));
</pre></div></pre>
<p>
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_PP_CAT</a>() above lets the PP 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>
<a name="a1" 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">X, <tr>
<td></td>
<td></td>
<td class="md" nowrap>Y&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>
Obsolete.
<p>
Use <a class="el" href="cat_8hpp.html#a0">BOOST_PP_CAT</a>(). </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>