Aracılığıyla paylaş


Makroları bildirdiği için

Kullanabileceğiniz _RPTn, ve _RPTFn crtdbg içinde tanımlı makrolar.Kullanımını değiştir h, printf deyimleri hata ayıklama.Bu makroları otomatik olarak sizin sürümünde kaybolur, yapı _debug nedenle bunları içine gerek yoktur, tanımlı değil #ifdefs.

Makro

İşlev

_RPT0, _RPT1, _RPT2, _RPT3, _RPT4

İleti dize ve dört bağımsız sıfıra dönüştürür.

İçin _RPT1 - _RPT4, ileti dize gören bir printf-dize bağımsız değişkenler için biçimlendirme stili.

_RPTF0, _RPTF1,_RPTF2,_RPTF4,

Aynı _rptn , ancak bu makroları makro bulunduğu dosya adı ve satır numarası da çıktı.

Aşağıdaki örneği inceleyin:

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

Bu kod değerlerini verir someVar ve otherVar için stdout.Şu çağrı kullanabilirsiniz _RPTF2 bu aynı değerleri ve buna ek olarak, dosya adı ve satır numarası bildirmek için:

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

Belirli bir uygulama sağlayan c çalışma zamanı kitaplığı ile sağlanan makrolar değil raporlama debug gerektiğini farkederseniz, özellikle kendi gereksinimlerinize uyacak şekilde tasarlanmış bir makro yazabilirsiniz.Bir üstbilgi dosyaları, örneğin, adlı bir makro tanımlamak için aşağıdaki gibi bir kod içerebilir 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

Bir çağrı ALERT_IF2 tüm işlevlerini gerçekleştirebilir printf bu konunun başındaki kodu:

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

Özel bir makro daha az bilgi (ne daha uygun olduğuna bağlı olarak) farklı hedeflere bildirmek için kolayca değiştirilebilir çünkü hata ayıklama gereksinimlerinizi güncellenmektedir bu yaklaşım özellikle yararlı olabilir.

Ayrıca bkz.

Diğer Kaynaklar

crt hata ayıklama teknikleri