|
![ein Kapitel weiter](../weiter.gif)
Mit der Funktion....
#include <assert.h>
void assert(int ausdruck);
...haben sie die Möglichkeit ihr Programm auf logische Fehler zu testen. Wenn der 'ausdruck==0' ist wird das Programm mit einer Fehlermeldung beendet. Ein einfaches Beispiel: Wir dividieren 2 Zahlen miteinander und keine der Zahl darf 0 oder negativ sein und der Teiler soll nicht größer als der Nenner sein.....
/*Download:asrt.c*/
#include <stdio.h>
#include <assert.h>
int divide(int zahl1, int zahl2)
{
assert( (zahl1>=0 && zahl1>=zahl2) && (zahl2>=0) );
return zahl1/zahl2;
}
int main()
{
printf("%d / %d = %d\n",5,2,divide(5,2));
printf("%d / %d = %d\n",3,4,divide(3,4));
printf("%d / %d = %d\n",4,4,divide(4,4));
return 0;
}
|
Das Programm wir mit der Fehlermeldung, die in etwa so aussieht abgebrochen...
assert.c line 6 failed assertion '(zahl1>=0 && zahl1>=zahl2) && (zahl2>=0)'
Diese Art zu testen eignet sich sehr gut zu größern Projekten. Damit man jetzt zum Beispiel bei großen Projekten nicht den ganzen Code durchsuchen muss um die assert() - Anweisungen zu entfernen muß man nur das MAKRO....
NDEBUG
...definieren und der Compiler ignoriert alle assert Aufrufe. Dies muß aber vor....
#include <assert.h>
...eingefügt werden. Hier unser Programm wo die assert-Funktion ignoriert wird....
/*Download:asrt2.c*/
#include <stdio.h>
#define NDEBUG
#include <assert.h>
int divide(int zahl1, int zahl2)
{
assert( (zahl1>=0 && zahl1>=zahl2) && (zahl2>=0) );
return zahl1/zahl2;
}
int main()
{
printf("%d / %d = %d\n",5,2,divide(5,2));
printf("%d / %d = %d\n",3,4,divide(3,4));
printf("%d / %d = %d\n",4,4,divide(4,4));
return 0;
}
|
![ein Kapitel weiter](../weiter.gif)
© 2001,2002 Jürgen Wolf
|