Sdílet prostřednictvím


Makra pro vykazování

Můžete použít _RPTn, a _RPTFn makra definovaná v CRTDBG.H nahradit používání printf příkazy pro ladění.Tato makra automaticky zmizí ve vaší verzi sestavení při _DEBUG není definována, takže není nutné je v uvozovkách #ifdefs.

Makro

Function

_RPT0, _RPT1, _RPT2, _RPT3, _RPT4

Vypíše řetězec zprávy a nuly do čtyř argumentů.

Pro _RPT1 prostřednictvím _RPT4, řetězec zprávy slouží jako printf-styl formátování řetězce pro argumenty.

_RPTF0, _RPTF1,_RPTF2,_RPTF4,

Stejné jako _RPTn , ale tato makra výstup také název a řádek číslo souboru kde nachází makro.

Příklad:

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

Tento kód vypíše hodnoty someVar a otherVar na stdout.Můžete použít následující volání _RPTF2 tyto hodnoty stejné a navíc soubor název a řádek číslo zprávy:

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

Pokud zjistíte, že určité aplikace potřebuje ladit, neobsahují makra dodávané s C Runtime library hlášení, můžete napsat makra navrženy tak, aby vyhovovaly vašim požadavkům.V jedné hlavičce souborů, například můžete uvést kód jako následující definovat makro nazvané 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

K jednomu volání ALERT_IF2 nelze provést všechny funkce printf kódu na začátku tohoto tématu:

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

Protože vlastní makra lze snadno změnit zprávu více nebo méně informací do různých míst (podle toho, co je vhodnější), tento přístup může být zvláště užitečné vyvíjet své požadavky na ladění.

Viz také

Další zdroje

Techniky ladění CRT