Sdílet prostřednictvím


assert (CRT)

Vyhodnotí výraz a, pokud je výsledek false, diagnostickou zprávu vytiskne a přeruší program.

void assert( 
   int expression 
);

Parametry

  • expression
    Výraz (včetně ukazatelů), který je vyhodnocen jako nenulová nebo 0.

Poznámky

assert Makro se obvykle používá k identifikaci logické chyby během vývoje aplikace implementací expression argument vyhodnocen false pouze pokud program pracuje správně.Po dokončení ladění uplatnění kontroly lze vypnout bez úpravy zdrojového souboru definováním identifikátor NDEBUG.NDEBUGmohou být definovány /D parametr příkazového řádku nebo #define směrnice.Pokud NDEBUG je definována s #define, směrnice se musí objevit před ASSERT.H je součástí.

assertVytiskne diagnostiku zpráva expression vyhodnocen jako false (0) a volání přerušení ukončení vykonávání programu.Pokud není provedena žádná akce expression je true (nenulové).Diagnostická zpráva obsahuje selhání výrazu název zdrojový soubor a číslo řádku kde se nezdařilo výraz.

Diagnostická zpráva je vytisknuta do široké znaky.Proto bude fungovat podle očekávání, i když jsou znaky Unicode ve výrazu.

Cíl diagnostické zprávy závisí na typu aplikace, která se nazývá rutinní.Konzolové aplikace vždy zobrazí zpráva přes stderr.Aplikace založené na systému Windows assert volání systému Windows MessageBox funkce pro vytvoření okna se zprávou zobrazí zprávu spolu s OK tlačítko.Když uživatel klepne OK, přeruší program okamžitě.

Pokud aplikace je spojena s ladicí verze knihoven run-time, assert vytvoří okno se zprávou se třemi tlačítky: přerušení, Opakovat, a Ignorovat.Pokud uživatel klepne na tlačítko přerušení, přeruší program okamžitě.Pokud uživatel klepne na tlačítko Opakovat, se nazývá ladicí program a uživatel může ladit program, pokud je povoleno ladění just-in-time (JIT).Pokud uživatel klepne na tlačítko Ignorovat, assert pokračuje v normálním spuštění: vytváření okna se zprávou se OK tlačítko.Všimněte si, že klepnete na tlačítko Ignorovat pokud existuje chybový stav může způsobit nedefinované chování.

Další informace o ladění CRT, viz Techniky ladění CRT.

assert Je k dispozici v release a debug verzi běhové knihovny C rutina.Dvě makra ostatních tvrzení _ASSERT a _ASSERTE, jsou také k dispozici, ale pouze vyhodnotit výrazy, předat jim kdy _DEBUG definoval příznak.

Požadavky

Rutina

Požadované záhlaví

assert

<Assert.h>

Příklad

V tomto programu analyze_string funkce používá assert funkce otestovat několik podmínek týkajících se řetězec a délka.Pokud některá z podmínek, program vytiskne zprávu, co způsobil chybu.

// crt_assert.c
// compile with: /c
#include <stdio.h>
#include <assert.h>
#include <string.h>

void analyze_string( char *string );   // Prototype

int main( void )
{
   char  test1[] = "abc", *test2 = NULL, test3[] = "";

   printf ( "Analyzing string '%s'\n", test1 ); fflush( stdout );
   analyze_string( test1 );
   printf ( "Analyzing string '%s'\n", test2 ); fflush( stdout );
   analyze_string( test2 );
   printf ( "Analyzing string '%s'\n", test3 ); fflush( stdout );
   analyze_string( test3 );
}

// Tests a string to see if it is NULL, 
// empty, or longer than 0 characters.
void analyze_string( char * string )
{
   assert( string != NULL );        // Cannot be NULL
   assert( *string != '\0' );       // Cannot be empty
   assert( strlen( string ) > 2 );  // Length must exceed 2
}
  

Ekvivalent v rozhraní .NET Framework

System::Diagnostics::Debug:: uplatnit

Viz také

Referenční dokumentace

Zpracování chyb (CRT)

Řízení procesů a prostředí

abort

raise

signal

_ASSERT, _ASSERTE – makra

_DEBUG