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

Я действительно хочу быть в состоянии пойти: (в C ++)

assert( num > 0, "The number must be greater than zero!");

В C # XNA у них есть метод, который делает именно это:

Debug.Assert( num > 0, "The number must be greater than zero!");

Есть ли способ сделать это так, чтобы среда выполнения давала мне полную ошибку, а не просто "ошибка подтверждения"?

Ответы [ 4 ]

7 голосов
/ 03 марта 2009

Вы можете использовать это в большинстве любых утверждений:

assert(("The number must be greater than zero!",  num > 0));
5 голосов
/ 03 марта 2009

Во время выполнения обычно отображается выражение, которое не удалось, поэтому вы можете сделать что-то вроде этого:

assert(num > 0 && "The number must be greater than zero!");

Что не повлияет на логику, но сообщение об ошибке подтверждения будет содержать описательную строку.

Кроме того, это работает без использования STL или Boost.

3 голосов
/ 03 марта 2009

Использовать assert (num> 0 && "Число должно быть больше нуля!");

0 голосов
/ 12 августа 2012

Используя BOOST, вы можете использовать их assert, как описано в 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!");

будет делать именно так, как требуется.

...