Udostępnij za pośrednictwem


Potwierdzenia i dostarczone przez użytkownika wiadomości (C++)

C++ języka obsługuje trzy obsługi błędów mechanizmy, które ułatwiają debugowanie aplikacji: dyrektywa "# błąd", static_assert słowa kluczowego oraz assert (CRT) makro.Wszystkie trzy mechanizmy wydawania komunikaty o błędach i dwóch również testować potwierdzeń oprogramowania.Potwierdzenia oprogramowania określa warunek, które mają być spełnione w określonym miejscu w programie.Jeśli potwierdzenia czas kompilacji zakończy się niepowodzeniem, kompilator generuje komunikat diagnostyczny i błąd kompilacji.Jeśli potwierdzenia run-time nie powiedzie się, system operacyjny problemów diagnostycznych wiadomości i zamyka aplikację.

Uwagi

Okres istnienia aplikacji składa się z wstępnego przetwarzania, skompilować i uruchomić fazy czasu.Każdego mechanizmu obsługi błędów uzyskuje dostęp do informacji debugowania, który jest dostępny podczas jednego z tych faz.Aby debugować skutecznie, wybierz mechanizm, który zapewnia odpowiednie informacje na temat tej fazy:

  • Dyrektywa "# błąd" jest aktywna na wstępne przetwarzanie czasu.Bezwarunkowo emituje komunikat określony przez użytkownika i powoduje niepowodzenie z powodu błędu kompilacji.Wiadomość może zawierać tekst, który jest manipulowane przez dyrektywy preprocesora, ale każdy wynikowy wyrażenie nie jest sprawdzane.

  • static_assert Zgłoszenie jest aktywna w czasie kompilacji.Sprawdza potwierdzenia oprogramowania, która jest reprezentowana przez integralną wyrażenie określone przez użytkownika, które mogą być konwertowane na wartość logiczną.Jeśli wynikiem wyrażenia jest zero (FAŁSZ), kompilator generuje komunikat określony przez użytkownika i kompilacji zakończy się niepowodzeniem z błędem.

    static_assert Zgłoszenie jest szczególnie przydatne podczas debugowania szablonów, ponieważ argumenty szablon może zawierać wyrażenie określone przez użytkownika.

  • assert (CRT) Makro jest aktywna w czasie wykonywania.Ocenia wyrażenia określone przez użytkownika, i jeśli wynik wynosi zero, system problemów diagnostycznych wiadomości i zamyka aplikację.Wiele innych makr, takiej jak _ASSERT i _ASSERTE, przypominają to makro, ale wydaje różnych komunikatów diagnostycznych zdefiniowanych w systemie lub zdefiniowane przez użytkownika.

Zobacz też

Informacje

"# błąd" dyrektywy (C/C++)

assert (CRT)

_ASSERT, _ASSERTE makr

static_assert

Makro _STATIC_ASSERT

Inne zasoby

Szablony