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 programu implementací expression argument vyhodnocen jako false pouze když program pracuje správně.Po dokončení ladění kontrola výrazu lze vypnout bez úpravy zdrojového souboru definováním identifikátor NDEBUG.NDEBUGmohou být definovány /D možnost příkazového řádku nebo #define směrnice.Pokud NDEBUG je definován s #define, směrnice se musí objevit před výrazu.H je zahrnuta.

assertVytiskne zprávu diagnostiku při expression vyhodnocen jako false (0) a volání přerušení ukončit provádění programu.Pokud není provedena žádná akce expression je true (nenulové).Diagnostická zpráva obsahuje výraz se nezdařila, název zdrojového souboru a řádek číslo kde vyhodnocení výrazu se nezdařilo.

Diagnostické zprávy je vytištěna v široké znaků.Proto bude fungovat očekávaným způsobem, i když jsou znaky Unicode ve výrazu.

Cíl diagnostické zprávy závisí na typu aplikace, která se nazývá rutinní.Aplikace konzoly vždy zobrazí zpráva prostřednictvím stderr.V aplikaci systému Windows assert volání systému Windows MessageBox funkci vytvořit, zobrazit zprávu spolu se zprávou OK tlačítko.Když uživatel klepne OK, okamžitě přeruší program.

Aplikace propojen s ladicí verzi knihovny runtime assert vytvoří okno se třemi tlačítky: přerušení, Opakovat, a Ignorovat.Pokud uživatel klepne na přerušení, okamžitě přeruší program.Pokud uživatel klepne na Opakovat, se nazývá debugger a uživatele můžete ladit program, pokud je povoleno ladění just-in-time (JIT).Pokud uživatel klepne na Ignorovat, assert pokračovat s normálním spuštění: vytváření okna se zprávou se OK tlačítko.Všimněte si, že klepnutím na Ignorovat Pokud existuje chybového stavu může vést v nedefinované chování.

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

assert Rutina je k dispozici ve verzi a ladicí verze C Runtime knihovny.Dvě další výrazu makra, _ASSERT a _ASSERTE, jsou také k dispozici, ale pouze vyhodnotí výrazy předávat při _DEBUG byla definována příznak.

Požadavky

Rutina

Požadované záhlaví

assert

<assert.h>

Příklad

V tomto programu analyze_string používá funkci assert funkci otestovat několik podmínek souvisejících s řetězci a délku.Pokud některá z podmínek, program vytiskne zprávu, co způsobilo selhání.

// 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:: výrazu

Viz také

Referenční dokumentace

Chyba při zpracování (CRT)

Proces a řízení prostředí

abort

raise

signal

_ASSERT, _ASSERTE makra

_DEBUG