Nachricht zu Assert in C++ hinzufügen

Zeeshan Afridi 12 Oktober 2023
  1. Assert in C++
  2. Vorteile von Assert in C++
  3. Benutzerdefinierte Nachricht in Assert in C++ anzeigen
  4. Passen Sie die benutzerdefinierte Nachricht in Assert in C++ an
  5. Fazit
Nachricht zu Assert in C++ hinzufügen

Asserts sind einer der Fehlerbehandlungsmechanismen in C++, die Entwicklern und Testern beim Debuggen und Testen der Anwendung helfen.

Dies sind boolesche Ausdrücke, die den Test der logischen Ausdrücke im Programm verwenden und true zurückgeben, wenn kein Fehler erkannt wird; andernfalls wird das Programm beendet und ein Fehler angezeigt.

Es wird verwendet, wenn wir einige Einschränkungen haben, die erfüllt werden müssen, um ordnungsgemäß ausgeführt oder anderweitig beendet zu werden.

cpp behaupten

Assert in C++

Nehmen wir an, die Geschwindigkeit des Autos sollte nicht kleiner als 0 und größer als die Lichtgeschwindigkeit sein.

Assert(speed<0 && speed> speed_of_light)
  1. Wir haben zwei Beschränkungen in diesem Ausdruck, die nicht verletzt werden sollten.
  2. Die Erfahrung hat gezeigt, dass Behauptungen in der Programmierung eine der effektivsten und schnellsten Methoden sind, um Fehler in Programmen zu erkennen und zu korrigieren.
  3. Die Erfahrung hat gezeigt, dass das Schreiben von Behauptungen während des Programmierens eine der schnellsten und effektivsten Methoden ist, um Fehler zu erkennen und zu korrigieren.

Asserts sind Präprozessor-Makros, die verwendet werden, um Bedingungsausdrücke in den Programmen auszuwerten.

Assert(Condition)

    assert(x < 10)

Dieser Ausdruck sagt uns, dass x kleiner als 10 sein sollte, um reibungslos zu laufen; andernfalls wird das Programm beendet und gibt einen Fehler aus.

Zum Beispiel führen wir ein Programm mit zwei bedingten Pfaden aus: true und false. Für den true-Pfad läuft das Programm reibungslos, ohne einen Fehler zu werfen, während im false-Pfad das Programm beendet wird und einen Fehler anzeigt.

Der Fehler besteht normalerweise aus dem fehlgeschlagenen bedingten Ausdruck, dem Pfad des Programms und der Zeilennummer, in der der Fehler aufgetreten ist.

Dies hilft uns, das Auftreten des Fehlers zu erfahren, was das Testen und Debuggen effizienter und einfacher macht.

Codebeispiel:

#include <cassert>

int main() {
  int x = 3;
  x = 7;
  assert(x == 3);
  return 0;
}

Ausgabe:

Assertion failed: x==3, file E:\Client Project \Codes\assertCodes.cpp,, line 7

Vorteile von Assert in C++

Zusicherungen sind sehr effektive und praktische Fehlerbehandlungsmechanismen, die uns in vielerlei Hinsicht helfen, Fehler im Code zu erkennen. Es wurde der testgetriebene Ansatz verwendet, der besagt, dass wir Testfälle vor der Entwicklung schreiben und dann die Entwicklung gemäß den Testfällen beginnen.

In ähnlicher Weise schreiben wir ein Stück Code in das Assert-Makro, das das Programm durchlaufen soll, ohne einen Fehler zu verursachen.

Einige Vorteile der Verwendung von assert beim Testen und Debuggen.

  1. Zusicherungen helfen uns bei der Fehlererkennung.
  2. Es bietet eine bessere Beobachtbarkeit.
  3. Es hilft uns auch, die Fehlerursache und den Fehlerpfad mit Zeilennummer zu identifizieren.
  4. Benutzerdefinierte Fehlermeldungen können hinzugefügt werden; andere Tester und Programmierer können den Fehler auch menschlicher verstehen.
  5. Es hilft uns beim fehlerfreien Logikaufbau.
  6. Effizientes Testen und Debuggen.

Benutzerdefinierte Nachricht in Assert in C++ anzeigen

Wir können auch Methoden verwenden, um benutzerdefinierte Nachrichten im Assert-Makro anzuzeigen, was eine effektive und praktische Option ist. Es zeigte und erklärte die Fehler auf eine menschenfreundlichere Art und Weise.

Kleine Teams arbeiten an jedem Teil der Software in großen Softwareorganisationen, einige entwerfen und andere programmieren und testen. Daher kann das Schreiben von Assertion-Makros mit benutzerdefinierten Nachrichten für die andere Person sehr hilfreich sein, um die Art und Ursache des Fehlers zu analysieren und zu verstehen.

Codebeispiel:

#include <cassert>

int main() {
  int dividend = 4;
  int divisor = 0;
  assert(("Message: Anything divided by 0 is undefined", divisor != 0));
  int divison = dividend / divisor;
  return 0;
}

Ausgabe:

Assertion failed: ( "Message: Anything divided by 0 is undefined", divisor != 0), file E:\Client Project \Codes\assertCodes.cpp,, line 6

In diesem Programm dividieren wir 4 durch 0 (4/0), aber wie wir wissen, können wir keine Zahl durch 0 dividieren, daher wird dies erwartungsgemäß einen Fehler auslösen. Um die Lesbarkeit des Fehlers zu verbessern, haben wir eine benutzerdefinierte Nachricht hinzugefügt.

Passen Sie die benutzerdefinierte Nachricht in Assert in C++ an

#include <cassert>
#include <iostream>
using namespace std;
bool print_if_false(const bool assertion, const char* message) {
  if (!assertion) {
    cout << message << endl;
  }
  return assertion;
}
int main() {
  int dividend = 4;
  int divisor = 0;
  assert(print_if_false(divisor != 0,
                        "Message: Anything divided by 0 is undefined"));
  return 0;
}

Ausgabe:

Message: Anything divided by 0 is undefined
Assertion failed: print_if_false(divisor != 0,"Message: Anything divided by 0 is undefined" ), file E:\Client Project \Codes\assertCodes.cpp, line 18

Dies ist das gleiche Beispiel wie oben, aber es ist angepasst. Die Funktionalitäten sind insgesamt gleich.

Wir haben unsere benutzerdefinierte Funktion erstellt, um die Nachricht in einer separaten Zeile anzuzeigen.

Der Zweck besteht darin, die Lesbarkeit zu verbessern und zu wissen, wie wir Assert-Makros anpassen können, um benutzerdefinierte Nachrichten anzuzeigen.

Fazit

In diesem Artikel haben wir die assert()-Anweisung in C++, ihre Funktionsweise und die Vorteile von assert() verstanden. Darüber hinaus haben wir die Syntax von assert() gesehen und wie angepasste Meldungen angezeigt werden können, um die Lesbarkeit des Fehlers zu verbessern.

Zeeshan Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn