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