Assertion und vom Benutzer bereitgestellte Meldungen (C++)
Die Programmiersprache C++ unterstützt drei Mechanismen zur Fehlerbehandlung, die Ihnen helfen, um die Anwendung zu debuggen: #error Directive, das static_assert-Schlüsselwort und das assert (CRT) Makro.Alle drei Mechanismen Testsoftware auch zwei Fehlermeldungen und geben Assertionen aus.Eine Software-Assertion gibt eine Bedingung an, die Sie erwarten, dass an einem bestimmten Punkt im Programm zutreffen.Wenn eine Kompilierzeit assertion fehlschlägt, gibt der Compiler eine Diagnosemeldung, und ein Kompilierungsfehler.Wenn eine Ablaufzeit assertion fehlschlägt, schließt das Betriebssystem eine Diagnosemeldung und die Anwendung.
Hinweise
Die Lebensdauer der Anwendung umfasst eine Vorverarbeitung, kompiliert und Laufzeit phase.Jeder Mechanismus zur Fehlerbehandlung Zugriff auf Debuginformationen, die während eines dieser Phasen verfügbar ist.Um effiziente Weise zu debuggen, wählen Sie den Mechanismus aus der entsprechende Informationen zu dieser Phase werden:
#error Directive an der Vorverarbeitungs wirksam ist.Es bedingungslos gibt eine vom Benutzer angegebene Meldung durch und führt die Kompilierung mit einem Fehler fehlschlägt.Die Meldung kann Text enthalten, der von Präprozessordirektiven geändert wird, aber kein resultierender Ausdruck nicht ausgewertet wird.
Die Deklaration static_assert zur Kompilierzeit gültig ist.Es testet eine Software-Assertion, die durch einen vom Benutzer angegebenen ganzzahligen Ausdruck dargestellt werden, der in einen booleschen Wert konvertiert werden kann.Wenn der Ausdruck auf Null (false) ausgewertet wird, gibt der Compiler die vom Benutzer angegebene Meldung und die Kompilierung schlägt mit einem Fehler aus.
Die static_assert Deklaration ist zum Debuggen von Vorlagen besonders nützlich, da Vorlagenargumente im vom Benutzer angegebene Ausdruck eingeschlossen werden können.
Das Makro ist assert (CRT) zur Laufzeit in Kraft.Er wertet einen vom Benutzer angegebenen Ausdruck und wenn das Ergebnis (null) ist, gibt das System eine Diagnosemeldung aus und schließt die Anwendung.Viele andere Makros, wie_ASSERT , ähneln, und _ASSERTEdieses Makro aber geben unterschiedliche systemdefinierte oder benutzerdefinierte Diagnosemeldungen aus.