Funktionsname : behaupten
Header-Datei : <assert.h>
Funktionsprototyp : void Assert(int Ausdruck);
Funktion : Bestätigen, ob ein Ausdruck korrekt ist
Parameter : Ausdruck Wenn sein Wert falsch ist (d. h. 0), gibt er zunächst eine Fehlermeldung an stderr aus und beendet dann das Programm durch Aufrufen von abort.
Rückgabewert : Kein Rückgabewert
Auffüllen :
1. Häufige Aufrufe wirken sich stark auf die Leistung des Programms aus und erhöhen den zusätzlichen Overhead. Nach dem Debuggen können Sie Assert-Aufrufe deaktivieren, indem Sie #define NDEBUG vor der Anweisung einfügen, die #include <assert.h> enthält.
2. Überprüfen Sie die Rechtmäßigkeit der zu Beginn der Funktion übergebenen Parameter.
3. Jede Behauptung testet nur eine Bedingung, denn wenn mehrere Bedingungen gleichzeitig getestet werden und die Behauptung fehlschlägt, ist es unmöglich, intuitiv zu bestimmen, welche Bedingung fehlgeschlagen ist.
4. Sie können keine Anweisungen verwenden, die die Umgebung ändern, da „asser“ nur in DEBUG wirksam wird. Wenn Sie dies tun, treten Probleme auf, wenn das Programm die „assertion“-Anweisung ignoriert, wenn es tatsächlich ausgeführt wird, wie zum Beispiel:
Fehler:
behaupten(i++<100);
Dies liegt daran, dass diese Anweisung nicht ausgeführt wird, wenn vor der Ausführung ein Fehler auftritt, z. B. i = 100, und der Befehl i ++ nicht ausgeführt wird.
richtig:
behaupten(i<100);i++;
5. Zwischen „asser“ und den folgenden Anweisungen sollte eine Leerzeile stehen, um ein Gefühl der logischen und visuellen Konsistenz zu erzeugen.
6. Asser kann an manchen Stellen die bedingte Filterung nicht ersetzen. Assert wird verwendet, um offensichtliche Fehler zu vermeiden, nicht um Ausnahmen zu behandeln. Fehler und Ausnahmen sind unterschiedlich. Fehler sollten nicht auftreten und Ausnahmen sind unvermeidlich. Ausnahmen in der C-Sprache können durch bedingte Beurteilung behandelt werden, und andere Sprachen verfügen über eigene Mechanismen zur Ausnahmebehandlung. Eine sehr einfache Regel für die Verwendung von Assert besteht darin, es am Anfang einer Methode oder Funktion zu verwenden. Wenn Sie es in der Mitte einer Methode verwenden, müssen Sie sorgfältig abwägen, ob es angemessen ist. Ein funktionaler Prozess hat zu Beginn der Methode noch nicht begonnen, und Probleme, die während der Ausführung eines funktionalen Prozesses auftreten, sind fast alle Ausnahmen.
Programmbeispiel : Variable a<80 beanspruchen und Ergebnis ausgeben
#include<assert.h>#include<stdio.h>intmain(void){inta=50;assert(a<80);//Assert a<80, wenn es 0 ist, wird eine Fehlermeldung ausgegeben und das Programm beendet , andernfalls weiterhin printf (Assertaistruen);return(0);} ausführen
Laufergebnisse:
Assertaistrue