وحدات الماكرو لإعداد تقرير

ينطبق هذا الموضوع على:

النسخة

Visual Basic

C#‎

#F

C++‎

مطور الويب

Express

الموضوع الذي لا ينطبق الموضوع الذي لا ينطبق الموضوع الذي لا ينطبق

أصلي فقط

الموضوع الذي لا ينطبق

pro ، Premium و Ultimate

الموضوع الذي لا ينطبق الموضوع الذي لا ينطبق الموضوع الذي لا ينطبق

أصلي فقط

الموضوع الذي لا ينطبق

يمكنك استخدام _RPTn ، ووحدات _RPTFn الماكرو والمعرفة في CRTDBG.H، إلى استبدال استخدم printfعبارات لتصحيح الأخطاء. وحدات الماكرو هذه تلقائياً dهوappear في الإصدار الخاص بك إنشاء متى _DEBUG هو غير معرفة، ولذلك هو لا حاجة لإحاطة لهم #ifdef s.

الماكرو

الوظيفة

_RPT0, _RPT1, _RPT2, _RPT3, _RPT4

مخرجات سلسلة رسالة والصفر إلى الوسيطات الأربعة.

ل _RPT1من خلال _RPT4، يعمل السلسلة الرسالة كـ printf -النمط تنسيق سلسلة للوسائط.

_RPTF0,_RPTF1,_RPTF2,_RPTF4,

إخراج مثل _RPT n ، ووحدات الماكرو هذه أيضا ملف والخط رقم الموقع يوجد الماكرو.

الرجاء مراجعة المثال التالي:

#ifdef _DEBUG
    if ( someVar > MAX_SOMEVAR )
        printf( "OVERFLOW! In NameOfThisFunc( ),
               someVar=%d, otherVar=%d.\n",
               someVar, otherVar );
#endif

وهذا تعليمات برمجية إخراج قيم someVarو otherVarإلى stdout . يمكنك استخدم الاستدعاء التالي إلى _RPTF2للإبلاغ عن هذه قيم نفسها و، بالإضافة إلى ذلك، رقم الخط واسم الملف:

if (someVar > MAX_SOMEVAR) _RPTF2(_CRT_WARN, "In NameOfThisFunc( ), someVar= %d, otherVar= %d\n", someVar, otherVar );

إذا وجدت أن تطبيق معين يجب تصحيح التقارير التي لا توفر وحدات الماكرو المتوفرة مع مكتبة وقت التشغيل C، يمكنك كتابة ماكرو مصمم خصيصا إلى ملائمة متطلباتك الخاصة. في واحد ملفات الرؤوس الخاص بك، على سبيل المثال، يمكنك أن تتضمن تعليمات برمجية كما يلي إلى تعريف ماكرو يسمى من ALERT_IF2:

#ifndef _DEBUG                  /* For RELEASE builds */
#define  ALERT_IF2(expr, msg, arg1, arg2)  do {} while (0)
#else                           /* For DEBUG builds   */
#define  ALERT_IF2(expr, msg, arg1, arg2) \
    do { \
        if ((expr) && \
            (1 == _CrtDbgReport(_CRT_ERROR, \
                __FILE__, __LINE__, msg, arg1, arg2))) \
            _CrtDbgBreak( ); \
    } while (0)
#endif

يمكن تنفيذ استدعاء واحد إلى من ALERT_IF2 الجميع وظائف التعليمة البرمجية printf في بداية هذا الموضوع:

ALERT_IF2(someVar > MAX_SOMEVAR, "OVERFLOW! In NameOfThisFunc( ), 
someVar=%d, otherVar=%d.\n", someVar, otherVar );

لأنه يمكن تم تغييره eكـily يمكن ماكرو مخصص للإبلاغ عن المعلومات إلى وجهات مختلفة (وذلك استناداً إلى ما هو أكثر ملاءمة) أكثر أو أقل، قد يكون هذا الأسلوب مفيداً كـ evolve متطلبات التصحيح الخاص بك.

راجع أيضًا:

موارد أخرى

عرض CRT تصحيح الأخطاء أساليب