بتاريخ 23 شباط 2009 08:53 م، قطب انس حاجبيه بشدة وهو يقول:
حسنا ... ادا بما ان التفعيل تم في release mode فان برنامجك قد يتوقف عن العمل ادا كانت احدى عبارات التي ارسلتها ل MY_ASSERT خاطئة اما في الحالة العكسية ... فلن يتوقف الرنامج لان MY_ASSERT لا تقوم بشيئ#if !NDEBUG
سوف يتحقق في الـ debug وليس في الـ release. حيث أن المعرف NDEBUG و الذي هو اختصار لـ (Not Debug) يعرف في الـ release version عادةً. ولاحظ أنني استخدم عملية الـ Not(!) وبالتالي فإن الشرط السابق يتحقق عندما لا تكون NDEBUG معرفة أي في وضع الـ debug ☺ وفي 23 شباط 2009 09:33 م، أعرب الشمري عن رأيه بالموقف كالآتي:
ماذا تقصد في الكود التالي :m_Width = c1 | (c2 << 8
MY_ASSERT(*itr++ == 1);
MY_ASSERT(x)
if (!x) fail(__FILE__, __LINE__);
بالتالي زيادة واحد إلى itr (++), أي بشكل فعال الإنتقال للعنصر القادم.MY_ASSERT(x) // Nothing
سوف يتم إستبدال السطر بالكامل بالتعليق, من دون النظر إلى محتوى x, لذلك لن يتم زيادة واحد إلى itr, أي لن يتم الإنتقال للعنصر القادم.