Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на C / C++ / Справка функциям С++.doc
Скачиваний:
91
Добавлен:
02.05.2014
Размер:
4 Мб
Скачать

Longjmp

-----------------------------------------------------------------

Назначение Выполняет нелокальный переход.

Синтаксис #include<setjmp.h>

void longjmp(jmp_buf env, int val);

Прототип в setjmp.h

Замечания Вызов longjmp восстанавливает сохраненное

(функцией setjmp) состояние задачи и возвраща-

ется таким образом,что кажется, что setjmp

возвратилось со значением val.

Состояние задачи это:

* все регистры сегментов(CS,DS,ES,SS)

* регистровые переменные(SI,DI)

* указатель стека(SP)

* указатель ограничения(FP)

* флаги

Состояние задачи достаточно информативно, чтобы

setjmp и longjmp использовать для вызова соп-

рограмм. Программа, которая вызывает setjmp и

устанавливает env, должна быть активной и не

завершаться, пока longjmp не завершится. Если

это случится, то результат неопределен.

Эти программы полезны для работы с ошибками и

исключительными ситуациями, обрабатываемыми

подпрограммами низкого уровня.

longjmp не может вернуть 0; если передан val=0,

longjmp вернет 1.

Возвращаемое Нет.

значение

Переносимость longjmp доступна в системах UNIX и совместима с

ANSI Cи.

Смотри также setjmp, signal

Пример

#include<stdio.h>

#include<setjmp.h>

jmp_buf jumper;

main()

{

int value;

value = setjmp(jumper);

if (value != 0)

{

printf("Longjmp со значением %d\n", value);

exit(value);

}

print("Вызов подпрограммы... \n");

subroutine();

}

subroutine()

{

longjmp(jumper,1);

}

Результат выполнения программы

Вызов подпрограммы...

Longjmp со значением 1

-----------------------------------------------------------------

Lowvideo

-----------------------------------------------------------------

Назначение Устанавливает пониженную яркость текстовых

символов.

Синтаксис void lowvideo(void);

Прототип в conio.h

Замечания lowvideo вызывает пониженную яркость отображе-

ния символов, сбрасывая для этого в текущем

цвете переднего плана бит интенсивности.

Данная функция не влияет на все символы, отоб-

ражаемые в данный момент времени на экране. Ее

влияние распространяется только на те симво-

лы, которые отображаются функциями непосредс-

твенного вывода на консоль (такими, как

cprintf), причем после обращения к lowvidio.

Возвращаемое Нет.

значение

Совместимость Данная функция работает только на ЭВМ семейства

IBM PC и совместимых с ними; соответствующая

функция есть в Турбо Паскале.

Смотри также highvidio, normvidio, textattr, textcolor

-----------------------------------------------------------------

_lrotl

-----------------------------------------------------------------

Назначение Циклически сдвигает влево беззнаковое длинное

целое.

Синтаксис unsigned long _lrotl(unsigned long lvalue,

int count);

Прототип в stdlib.h

Замечания _lrotl сдвигает lvalue влево на count бит.

Возвращаемое _lrotl возвращает сдвинутое влево на count бит

значение lvalue.

Смотри также _rotr

-----------------------------------------------------------------

_lrotr

-----------------------------------------------------------------

Назначение Циклически сдвигает вправо беззнаковое длинное

целое.

Синтаксис unsigned long _lrotr(unsigned long lvalue,

int count);

Прототип в stdlib.h

Замечания _lrotr сдвигает lvalue вправо на count бит.

Возвращаемое _lrotr возвращает сдвинутое вправо на count бит

значение lvalue.

Смотри также _rotr

-----------------------------------------------------------------