nclude using namespa

Автор admin Суббота, 2 мая 2009 11:32

nclude using namespace std; class Rainbow { public: RainbowO { cout « “RainbowO” « endl; } -RainbowO { cout « “-RainbowO” « endl: } }: jmp_buf kansas: void oz() { Rainbow rb: for(int i = 0: i < 3: i++) cout « “there’s no place like home\n”: longjmp(kansas. 47): } int mainO { if(setjmp(kansas) == 0) { cout « “tornado, witch, munchkins..An”: oz(): } else { cout « “Auntie Em! ” « “I had the strangest dream…” « endl: } } ///:- Функция setjmpO вообще ведет себя странно. Если вызывать ее напрямую, она сохраняет всю информацию о текущем состоянии процессора (включая содержимое указателей команд и стека) в аргументе jmpjbuf и возвращает ноль. В этом случае она ведет себя как обычная функция. Но если вызвать функцию longjmp() с тем же аргументом jmpjbuf, все выглядит так, словно управление снова только что было возвращено из функции setjmp() — программа начинает выполняться с команды, следующей за вызовом setmp(). Однако на этот раз возвращаемое значение равно второму аргументу longjmp(), и это позволяет определить, что в действительности произошел возврат из longjmp(). Нетрудно представить, что при


Комментарии закрыты.