diff --git a/assert.html b/assert.html index a970cef..aa3cbf2 100644 --- a/assert.html +++ b/assert.html @@ -17,36 +17,89 @@
+ BOOST_ASSERT
+ BOOST_ASSERT_MSG
+ BOOST_VERIFY
The header <boost/assert.hpp> defines the macro BOOST_ASSERT, which is similar to the standard assert macro defined in <cassert>. - The macro is intended to be used in Boost libraries. + The macro is intended to be used in both Boost libraries and user + code.
By default, BOOST_ASSERT(expr) is equivalent to assert(expr).
-When the macro BOOST_DISABLE_ASSERTS is defined when <boost/assert.hpp> +
If the macro BOOST_DISABLE_ASSERTS is defined when <boost/assert.hpp> is included, BOOST_ASSERT(expr) is defined as ((void)0). This allows users to selectively disable BOOST_ASSERT without affecting the definition of the standard assert.
-When the macro BOOST_ENABLE_ASSERT_HANDLER is defined when <boost/assert.hpp> +
If the macro BOOST_ENABLE_ASSERT_HANDLER is defined when <boost/assert.hpp> is included, BOOST_ASSERT(expr) evaluates expr and, if the result is false, evaluates the expression
+::boost::assertion_failed(#expr, BOOST_CURRENT_FUNCTION, __FILE__, __LINE__)
+
assertion_failed is declared in <boost/assert.hpp> as
--namespace boost ++namespace boost { - -void assertion_failed(char const * expr, char const * function, char const * file, long line); - + void assertion_failed(char const * expr, char const * function, char const * file, long line); }+but it is never defined. The user is expected to supply an appropriate definition.
As is the case with <cassert>, <boost/assert.hpp> can be included multiple times in a single translation unit. BOOST_ASSERT will be redefined each time as specified above.
+ +BOOST_ASSERT_MSG
++ The header <boost/assert.hpp> defines the macro BOOST_ASSERT_MSG, + which is similar to the standard assert macro defined in <cassert>, + but with an additional macro parameter supplying an error message. The macro is intended to be used in both Boost libraries + and user code. +
+BOOST_ASSERT_MSG(expr, msg) is equivalent to
++ ((void)0)
if BOOST_DISABLE_ASSERTS or NDEBUG are + defined orexpr
evaluates totrue
. If those + macros and BOOST_ENABLE_ASSERT_MSG_HANDLER are not + defined, andexpr
evaluates tofalse
, an error + message that includes #expr, msg, BOOST_CURRENT_FUNCTION, + __FILE__, and __LINE__ is sent to output stream + BOOST_ASSERT_MSG_OSTREAM + andstd::abort()
is called.BOOST_ASSERT_MSG_OSTREAM defines the output stream. It defaults to
+std::cerr
. + Integrated development environments (IDE's) like Microsoft Visual Studio + may produce easier to understand output if messages go to a different + stream, such asstd::cout
. Users may define BOOST_ASSERT_MSG_OSTREAM before including <boost/assert.hpp> + to specify a different output stream.If the macro BOOST_ENABLE_ASSERT_MSG_HANDLER is defined when <boost/assert.hpp> + is included, instead of sending a error message to an output + stream, this expression is evaluated
+++::boost::assertion_failed_msg(#expr, msg, BOOST_CURRENT_FUNCTION, + __FILE__, __LINE__)
+assertion_failed_msg is declared in <boost/assert.hpp> + as
+++namespace boost +{ + void assertion_failed_msg(char const * expr, char const * msg, char const * function, char const * file, long line); +} ++but it is never defined. The user is expected to supply an appropriate + definition.
+As is the case with <cassert>, <boost/assert.hpp> + can be included multiple times in a single translation unit. BOOST_ASSERT_MSG + will be redefined each time as specified above.
+ +BOOST_VERIFY
<boost/assert.hpp> also defines the macro BOOST_VERIFY. It has exactly the same behavior as BOOST_ASSERT, except that the expression that is passed to BOOST_VERIFY is always @@ -54,8 +107,9 @@ void assertion_failed(char const * expr, char const * function, char const * fil effects; it can also help suppress warnings about unused variables when the only use of the variable is inside an assertion.
- Copyright © 2002, 2007 by Peter Dimov. Distributed under the Boost Software + Copyright © 2002, 2007 by Peter Dimov. Copyright © 2011 + by Beman Dawes. Distributed under the Boost Software License, Version 1.0. See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.