Udostępnij za pośrednictwem


assert (CRT)

Oblicza wyrażenie i, gdy wynik jest false, drukuje komunikat diagnostyczny i program przerywa.

void assert( 
   int expression 
);

Parametry

  • expression
    Wyrażenie (w tym wskaźników), którego wynikiem jest różna od zera lub 0.

Uwagi

assert Makro jest zazwyczaj używany do identyfikowania błędy logiczne podczas rozwoju programu, implementując expression argumentu do oceny do false tylko gdy program działa niepoprawnie.Po zakończeniu debugowania sprawdzanie potwierdzenia można wyłączyć bez modyfikowania pliku źródłowego, definiując identyfikator NDEBUG.NDEBUGmoże być zdefiniowana z /D opcji wiersza polecenia lub z #define dyrektywy.Jeśli NDEBUG jest zdefiniowana z #define, dyrektywa musi pojawić się przed ASSERT.H jest włączone.

assertDrukuje diagnostyczne wiadomości, gdy expression wynikiem false (0) i wywołania przerwanie zakończenie wykonywania programu.Jeśli zostanie podjęta żadna akcja expression jest true (niezerowej).Diagnostyczne wiadomość zawiera wyrażenie nie powiodło się, nazwę pliku i wiersza numer źródła gdzie potwierdzenia nie powiodło się.

Diagnostyczne wiadomość jest drukowana w szerokości znaków.W ten sposób będzie działać zgodnie z oczekiwaniami, nawet jeśli istnieją znaków Unicode w wyrażeniu.

Miejsce docelowe wiadomości diagnostyczne zależy od typu aplikacji, która wywołała rutynowych.Otrzymywanie wiadomości za pośrednictwem aplikacji konsoli stderr.W przypadku aplikacji opartych na systemie Windows assert wymaga systemu Windows MessageBox funkcji, aby utworzyć okno komunikatu, aby wyświetlić wiadomość wraz z OK przycisku.Kiedy użytkownik kliknie OK, program przerywa się niezwłocznie.

W przypadku aplikacji połączonego z wersją debugowania bibliotek run-time assert tworzy okno komunikatu z trzema przyciskami: przerwanie, ponawiania próby, i Ignoruj.Jeśli użytkownik kliknie przerwanie, program przerywa się niezwłocznie.Jeśli użytkownik kliknie ponawiania próby, jest nazywany debugera i użytkownika można rozpocząć debugowanie programu, jeśli włączone jest debugowanie just-in-time (JIT).Jeśli użytkownik kliknie Ignoruj, assert z jego normalnego wykonywania w dalszym ciągu: tworzenie okno komunikatu z OK przycisku.Należy zauważyć, że kliknięcie Ignoruj gdy istnieje warunek błędu może spowodować niezdefiniowane zachowanie.

Aby uzyskać więcej informacji na temat debugowania CRT, zobacz Techniki debugowania CRT.

assert Procedura jest dostępna w wersji, jak i debugowe wersje biblioteki uruchomieniowej C.Dwa pozostałe makra potwierdzenia, _ASSERT i _ASSERTE, są również dostępne, ale tylko ocenia wyrażenia, przekazanych do nich, gdy _DEBUG określono flagę.

Wymagania

Rozpoczęto wykonywanie procedury

Wymaganego nagłówka

assert

<assert.h>

Przykład

W tym programie analyze_string działać zastosowań assert funkcji kilka warunków badania związane z ciągiem i długości.Jeśli którykolwiek z warunków nie powiedzie się, program drukuje komunikat informujący o przyczynie niepowodzenia.

// 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
}
  
  

Odpowiednik w programie .NET Framework

System::Diagnostics::Debug:: potwierdzenia

Zobacz też

Informacje

Błąd obsługi (CRT)

Proces i kontroli środowiska

abort

raise

signal

_ASSERT, _ASSERTE makr

_DEBUG