التأكيدات C ++ التي يمكن عرض سلسلة مخصص مع دفعة أو STL؟
سؤال
وأنا حقا تريد أن تكون قادرة على الذهاب: (في C ++)
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 أو الدافع.
استخدم ASSERT (الأسطوانات> 0 && "يجب أن يكون عدد أكبر من الصفر!")؛
وعن طريق 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!");
وستفعل بالضبط على النحو المطلوب.
لا تنتمي إلى StackOverflow