التأكيدات C ++ التي يمكن عرض سلسلة مخصص مع دفعة أو STL؟

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

سؤال

وأنا حقا تريد أن تكون قادرة على الذهاب: (في 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!");

وستفعل بالضبط على النحو المطلوب.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top