Утверждения C++, которые могут отображать пользовательскую строку с помощью Boost или STL?

StackOverflow https://stackoverflow.com/questions/607299

Вопрос

Я очень хочу иметь возможность пойти:(на С++)

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!");

сделал бы именно так, как просили.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top