Freigeben über


MFC-Assertionen

Aktualisiert: November 2007

Dieses Thema gilt für folgende Anwendungsbereiche:

Edition

Visual Basic

C#

C++

Web Developer

Express

Nur "Systemeigen"

Standard

Nur "Systemeigen"

Pro und Team

Nur "Systemeigen"

Tabellenlegende:

Vorhanden

Nicht vorhanden

Befehl oder Befehle, die standardmäßig ausgeblendet sind.

Das ASSERT-Makro für die Assertionsüberprüfung ist in MFC definiert. Darüber hinaus bietet MFC Definitionen für "MFC ASSERT_VALID" und "CObject::AssertValid" zum Überprüfen des internen Zustands eines von CObject abgeleiteten Objekts.

Wenn das Argument (ein Ausdruck) mit 0 (null) oder false ausgewertet wird, wird die Programmausführung durch das MFC-Makro ASSERT angehalten und eine Benutzerwarnung ausgegeben. Wenn der Ausdruck einen Wert ungleich 0 (null) ergibt, wird die Ausführung fortgesetzt.

Schlägt eine Assertion fehl, wird der Name der Quelldatei sowie die Zeilennummer der Assertion in einem Meldungsdialogfeld angezeigt. Wenn Sie im Dialogfeld auf Wiederholen klicken, wird AfxDebugBreak aufgerufen, die Ausführung unterbrochen und der Debugger aufgerufen. An diesem Punkt können Sie die Aufrufliste und weitere Debuggerfunktionen überprüfen, um die Ursache für den Assertionsfehler zu ermitteln. Bei Aktivierung des Just-In-Time-Debuggens kann der Debugger über das Dialogfeld aufgerufen werden, sofern er beim Auftreten des Assertionsfehlers nicht ausgeführt wurde.

Das folgende Beispiel veranschaulicht die Verwendung von ASSERT, um den Rückgabewert einer Funktion zu überprüfen:

int x = SomeFunc(y);
ASSERT(x >= 0);   //  Assertion fails if x is negative

Um eine Typüberprüfung für die Funktionsargumente vorzunehmen, können Sie ASSERT mit der IsKindOf-Funktion verwenden:

ASSERT( pObject1->IsKindOf( RUNTIME_CLASS( CPerson ) ) );

Programmfehler werden vom ASSERT-Makro nur in der Debugversion des Programms aufgefangen. In der Releaseversion generiert das Makro keinen Code. Wenn Sie den Ausdruck in der Releaseversion auswerten müssen, verwenden Sie anstelle von ASSERT das VERIFY-Makro.

Siehe auch

Konzepte

Assertionen