Sdílet prostřednictvím


Makra pro vytváření sestav

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

Makro

Description

_RPT0, _RPT1, _RPT2, _RPT3, _RPT4

Výstupem řetězec zprávy a nula čtyři argumenty.Pro _RPT1 až _RPT4, řetězec zpráva slouží jako řetězec formátování pro argumenty printf stylu.

_RPTF0, _RPTF1, ,_RPTF2, _RPTF4

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

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 k stdout.Můžete použít následující volání _RPTF2 hlášení tyto stejné hodnoty a dále souboru název a číslo řádku:

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 ladění hlášení, které neobsahují makra dodávaná s běhové knihovny jazyka C, můžete napsat makra, navrženy tak, aby vyhovovaly vašim požadavkům.V jednom z vašich souborů hlaviček, například můžete zahrnout 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

Jedno volání ALERT_IF2 by mohl provádět všechny funkce printf kód na začátku tohoto tématu:

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

Vzhledem k tomu, že vlastní makro lze snadno změnit více či méně podávat informace do různých míst (podle toho, co je vhodnější), tento přístup může být užitečné, jak rozvíjet své požadavky na ladění.

Viz také

Další zdroje

Techniky ladění CRT