]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | <html> |
2 | <head> | |
3 | <title>BOOST_PP_ASSERT</title> | |
4 | <link rel="stylesheet" type="text/css" href="../styles.css"> | |
5 | </head> | |
6 | <body> | |
7 | <div style="margin-left: 0px;"> | |
8 | The <b>BOOST_PP_ASSERT</b> macro conditionally causes a preprocessing error. | |
9 | </div> | |
10 | <h4>Usage</h4> | |
11 | <div class="code"> | |
12 | <b>BOOST_PP_ASSERT</b>(<i>cond</i>) | |
13 | </div> | |
14 | <h4>Arguments</h4> | |
15 | <dl> | |
16 | <dt>cond</dt> | |
17 | <dd> | |
18 | A condition that determines whether an assertion occurs. | |
19 | Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>. | |
20 | </dd> | |
21 | </dl> | |
22 | <h4>Remarks</h4> | |
23 | <div> | |
24 | If <i>cond</i> expands to <i>0</i>, this macro causes a preprocessing error. | |
25 | Otherwise, it expands to nothing. | |
26 | </div> | |
27 | <h4>See Also</h4> | |
28 | <ul> | |
29 | <li><a href="assert_msg.html">BOOST_PP_ASSERT_MSG</a></li> | |
30 | <li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li> | |
31 | </ul> | |
32 | <h4>Requirements</h4> | |
33 | <div> | |
34 | <b>Header:</b> <a href="../headers/debug/assert.html"><boost/preprocessor/debug/assert.hpp></a> | |
35 | </div> | |
36 | <h4>Sample Code</h4> | |
37 | <div><pre> | |
38 | #include <<a href="../headers/cat.html">boost/preprocessor/cat.hpp</a>> | |
39 | #include <<a href="../headers/debug/assert.html">boost/preprocessor/debug/assert.hpp</a>> | |
40 | #include <<a href="../headers/logical/bitnor.html">boost/preprocessor/logical/bitnor.hpp</a>> | |
41 | #include <<a href="../headers/logical/compl.html">boost/preprocessor/logical/compl.hpp</a>> | |
42 | ||
43 | // The is BOOST_PP_IS_NULLARY macro is not part of | |
44 | // the public interface of the library because it | |
45 | // doesn't work on Borland preprocessors. It is | |
46 | // only used here to illustrate assertions. In | |
47 | // effect, it detects whether an argument is empty | |
48 | // parenthesis or some text. | |
49 | ||
50 | #include <boost/preprocessor/detail/is_nullary.hpp> | |
51 | ||
52 | #define IS_EDISON_DESIGN_GROUP() \ | |
53 | <a href="compl.html">BOOST_PP_COMPL</a>( \ | |
54 | BOOST_PP_IS_NULLARY( \ | |
55 | <a href="cat.html">BOOST_PP_CAT</a>(IS_EDG_CHECK, __EDG_VERSION) \ | |
56 | ) \ | |
57 | ) \ | |
58 | /**/ | |
59 | #define IS_EDG_CHECK__EDG_VERSION () | |
60 | ||
61 | #define IS_METROWERKS() \ | |
62 | <a href="compl.html">BOOST_PP_COMPL</a>( \ | |
63 | BOOST_PP_IS_NULLARY( \ | |
64 | <a href="cat.html">BOOST_PP_CAT</a>(IS_MWERKS_CHECK, __MWERKS__) \ | |
65 | ) \ | |
66 | ) \ | |
67 | /**/ | |
68 | #define IS_MWERKS_CHECK__MWERKS__ () | |
69 | ||
70 | #define IS_MICROSOFT() \ | |
71 | <a href="bitnor.html">BOOST_PP_BITNOR</a>( \ | |
72 | IS_MICROSOFT_ROOT(), \ | |
73 | IS_EDISON_DESIGN_GROUP() \ | |
74 | ) \ | |
75 | /**/ | |
76 | #define IS_MICROSOFT_ROOT() \ | |
77 | BOOST_PP_IS_NULLARY( \ | |
78 | <a href="cat.html">BOOST_PP_CAT</a>(IS_MSVC_CHECK, _MSC_VER) \ | |
79 | ) \ | |
80 | /**/ | |
81 | #define IS_MSVC_CHECK_MS_VER () | |
82 | ||
83 | // this macro doesn't work on EDG... | |
84 | // (this is just an example) | |
85 | ||
86 | #define MACRO(n) \ | |
87 | <a href="cat.html">BOOST_PP_CAT</a>( \ | |
88 | MACRO_, \ | |
89 | IS_EDISON_DESIGN_GROUP() \ | |
90 | )(n) \ | |
91 | /**/ | |
92 | ||
93 | #define MACRO_1(n) \ | |
94 | <a href="assert.html">BOOST_PP_ASSERT</a>(0) \ | |
95 | "Edison Design Group is not supported" \ | |
96 | /**/ | |
97 | ||
98 | #define MACRO_0(n) normal mode: n | |
99 | ||
100 | MACRO(10) | |
101 | </pre></div> | |
102 | <hr size="1"> | |
103 | <div style="margin-left: 0px;"> | |
104 |