Beschreibung | Die Funktionen _longjmp() und _setjmp() sind identisch zu longjmp() bzw. setjmp() , außer dass sie die Signalmaske unverändert lassen. Wenn _longjmp() aufgerufen wird, ohne dass env zuvor von _setjmp() initialisiert wurde oder wenn der letzte Aufruf von _setjmp() in einer Funktion lag, die mittlerweile schon zurückgekehrt ist, so ist das Verhalten undefiniert. |
Hinweis | Es können Fehler auftreten, wenn _longjmp() ausgeführt wird und die Umgebung, in der _setjmp() ausgeführt wurde, nicht mehr existiert. Die Umgebung des _setjmp() -Aufrufs existiert dann nicht mehr, wenn sich die Funktion beendet, die den Aufruf enthält, oder die Save Area mit den automatic-Variablen verlässt. Möglicherweise wird dieser Fehler nicht entdeckt, was dazu führt, dass _longjmp() ausgeführt wird. In diesem Fall ist der Inhalt der Save Area unvorhersehbar. Dieser Fehler kann auch dazu führen, dass sich der Prozess beendet. Wenn die Funktion zurückgekehrt ist, ist das Ergebnis undefiniert. Wenn an longjmp() , _longjmp() oder siglongjmp() ein Zeiger auf einen Bereich übergeben wird, der nicht von setjmp() , _setjmp() bzw. sigsetjmp() erzeugt, oder wenn der Bereich vom Benutzer verändert wurde, können die oben beschriebenen Fehler sowie zusätzliche Probleme auftreten. _longjmp() und _setjmp() werden aus Kompatibilitätsgründen angeboten. Neue Anwendungen sollten siglongjmp() bzw. sigsetjmp() verwenden.
|