Annahmen in C
Einführendes Beispiel
Eine Annahme bricht das Programm mit einer Fehlermeldung ab, wenn ihr Ausdruck den Wert »0« hat.
main.c
#include <assert.h> int main( void ) { assert( 0 ); }
- Konsole (Ausgabe ähnlich)
Assertion failed!
File: main.c, Line 4
Einleitung
Durch eine assert-Anweisung (Annahmeanweisung, kurz: Annahme) kann die Wahrheit einer Aussage festgehalten werden.
Die assert-Anweisung veranlaßt den Abbruch des Prozesses, falls ihre Aussage (Annahmeausdruck, kurz: Annahme) falsch sein sollte. So können Annahmen, welche der Programmierer macht, also Erwartungen des Programmierers, auf verständliche Weise festgehalten und auf wirkungsvolle Weise überprüft werden.
Diese Anweisung ist für die Überprüfung von Annahmen während der Entwicklung gedacht. Wenn ein Programm zu einem Kunden ausgeliefert wird, könnten die assert-Anweisung entfernt werden.
Syntax
.------. .-. .----------. .-. .-.
--->( assert )--->( ( )--->| Ausdruck |--->( ) )--->( ; )--->
'------' '-' '----------' '-' '-'
Semantik (vereinfacht)
Falls der Wert des ersten Ausdrucks 0 ist, wird das Programm mit einer Fehlermeldung abgebrochen.
Beispiel
In dem folgenden Programmbeispiel erlaubt die assert-Anweisung es, zu erkennen, wenn eine Funktion gegen ihren Kontrakt mit 0 aufgerufen wird.
main.c
#include <assert.h>
#include <stdio.h> /** @brief Ergibt den Kehrwert des Argumentwertes
@param i darf nicht 0 sein
@return Kehrwert des Argumentwertes
@pre i ist nicht gleich 0 */ int kehrwert( int const i )
{ assert( i ); /* Vorbedingung */
return 1 / i; } int main( void )
{ printf( "%d\n", kehrwert( 1 ));
printf( "%d\n", kehrwert( 0 )); }- Konsole
1
Assertion failed!