Утверждения C++, которые могут отображать пользовательскую строку с помощью Boost или STL?
Вопрос
Я очень хочу иметь возможность пойти:(на С++)
assert( num > 0, "The number must be greater than zero!");
В C# XNA есть метод, который делает именно это:
Debug.Assert( num > 0, "The number must be greater than zero!");
Есть ли какой-нибудь способ сделать это, чтобы среда выполнения выдавала мне полную ошибку, а не просто ошибку «ошибка утверждения»?
Решение
Вы можете использовать это практически в любом утверждении:
assert(("The number must be greater than zero!", num > 0));
Другие советы
Среда выполнения обычно отображает выражение, которое не удалось, поэтому вы можете сделать что-то вроде этого:
assert(num > 0 && "The number must be greater than zero!");
Это не повлияет на логику, но сообщение об ошибке утверждения будет содержать описательную строку.
Кроме того, это работает без необходимости использования STL или Boost.
Use Assert(num > 0 && "Число должно быть больше нуля!");
Используя BOOST, вы можете использовать их утверждение, как описано в http://www.boost.org/doc/libs/1_50_0/libs/utility/assert.html:
#include <boost/assert.hpp>
/* ... */
BOOST_ASSERT_MSG( num > 0, "The number must be greater than zero!");
сделал бы именно так, как просили.