Стивен Прата - Язык программирования C. Лекции и упражнения (6-е изд.) 2015
- Название:Язык программирования C. Лекции и упражнения (6-е изд.) 2015
- Автор:
- Жанр:
- Издательство:Вильямс
- Год:0101
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Стивен Прата - Язык программирования C. Лекции и упражнения (6-е изд.) 2015 краткое содержание
Язык программирования C. Лекции и упражнения (6-е изд.) 2015 - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
int islessequal{реальный- тип-с-плавающей-запятой х, реальный-тип-с-плавающей- запятой у);
Макрос С99, который возвращает значение (х) <= (у) без генерации исключения плавающей запятой типа "некорректное число”, если один или оба аргумента являются NaN
int islessgreater { реальный-тип-с-плавающей- запятой х, реальный-тип- с-плавающей-запятой у);
Макрос С99, который возвращает значение (х) < (у> | | (х) > (у) без генерации исключения плавающей запятой типа “некорректное число”, если один или оба аргумента являются NaN
int isunordered(реальный- тип-с-плавагацей-запятой х, реальный-тип- с-плавающей-запятой у);
Возвращает единицу, если аргументы неупорядочены (т.е. хотя бы один является NaN), в противном случае возвращает 0
Нелокальные переходы: setjmp.h
Заголовочный файл setjmp.h позволяет обходить обычную последовательность вызовов и возвращений из функций. Функция setjmp() сохраняет информацию о текущей среде выполнения (например, указатель на текущую инструкцию) в переменной типа jmp buf (тип массива, определенный в setjmp.h), а функция longjmp() передает выполнение этой среде. Функции предназначены для помощи в обработке ошибочных ситуаций и не задуманы для использования как части нормального потока управления программы. Упомянутые функции описаны в табл. B.V.17.
Справочные материалы 865
Таблица 6.V.17. Функции в eetjmp.li
Обработка сигналов: signal.h
Сигнал — это условие, которое может быть сообщено программе во время ее выполнения. Он представляется положительным целым числом. Функция raise() отправляет, или генерирует, сигнал, а функция signal() устанавливает ответ на определенный сигнал.
В стандарте определен целочисленный тип, sig_atomic_t, используемый для указания объектов, которые являются атомарными в отношении обработчиков сигналов. Другими словами, обновление атомарного типа представляет собой неделимый процесс.
Стандарт предоставляет макросы, перечисленные в табл. B.V.18, которые предназначены для представления возможных сигналов; реализация может добавлять дополнительные значения. Эти макросы могут использоваться в качестве аргументов функций raise() и signal().
Таблица 6.V.18. Макросы сигналов
В качестве второго аргумента функция signal() принимает указатель на функцию void, получающую аргумент int. Она также возвращает указатель того же типа. Функция, вызываемая в ответ на сигнал, называется обработчиком сигнала. Стандарт определяет три макроса, подходящие этому прототипу:
void (*funct)(int);
В табл. B.V.19 перечислены эти макросы.
Если сигнал sig сгенерирован, a func указывает на функцию (см. прототип signal() в табл. E.V.20), то сначала в большинстве случаев вызывается signal (sig, SIG_DFL) для сброса обработчика сигнала к стандартной установке, после чего вызывается (*func)(sig).
866 Приложение Б
Таблица 6.V.19. Макросы типа void (*f) (int)
Функция обработки сигнала, указанная с помощью func, может быть завершена выполнением оператора return либо вызовом abort(), exit() или longjmp().
В табл. B.V.20 перечислены функции сигналов.
Таблица 6.V.20. Функции сигналов
Выравнивание: stdaiign.h (С11)
В заголовочном файле stdaiign.h определены четыре макроса, имеющие отношение к определению и указанию свойств выравнивания объектов данных. Эти макросы перечислены в табл. B.V.21. Первые два макроса создают псевдонимы, совместимые с C++.
Таблица 6.V.21. Макросы в stdalign.li
Переменное количество аргументов: stdarg.h
Заголовочный файл stdarg.h предоставляет средства для определения функций, принимающих переменное количество аргументов. Прототип для такой функции должен содержать список параметров, в котором указан как минимум один параметр, за которым следует троеточие:
void f 1 (int n, ...);
int f2 (int n, float x, int k, ...);
double f3 (..A;
Справочные материалы 867
В следующей таблице термин parmN— это идентификатор, используемый для обозначения последнего параметра, который предшествует троеточию. В предыдущих примерах таким параметром был n в первом случае и к — во втором.
В заголовочном файле объявлен тип va list для представления объекта данных, который применяется для хранения параметров, соответствующих троеточию в списке параметров. В табл. B.V.22 перечислены макросы, которые должны использоваться в функциях с переменным количеством параметров. Перед применением этих макросов должен быть объявлен объект типа va_list.
Таблица 6.V.22. Макросы переменных списков аргументов
Поддержка атомарности: stdatomic.h (С11)
Заголовочный файл stdatomic.h вместе с threads.h обеспечивает поддержку для параллельного программирования. Эта тема выходит за рамки настоящей книги, но если выражаться общими терминами, то заголовочный файл stdatomic.h предоставляет макросы для создания атомарных операций. В сообществе программистов понятие атомарный используется в том же смысле, в каком Демокрит применял его в своей теории материи — т.е. неделимый. Операция, такая как присваивание одной структуры другой, на уровне программирования может выглядеть атомарной, но на уровне машинного языка состоять из нескольких шагов. Если программа разделена на множество потоков, то один ноток может читать или модифицировать данные, которые находятся в процессе использования другим потоком. В итоге могла бы получиться странная структура, в которой значения одних членов установлены одним потоком, а других членов — другим потоком. Заголовочный файл stdatomic.h позволяет создавать операции, которые действуют так, как если бы они были атомарными, т.е. один поток не может прерывать работу другого потока.
Поддержка булевских значений: stdbool.h (С99)
В этом заголовочном файле определены четыре макроса, описанные в табл. B.V.23. Таблица 6.V.23. Макросы в stdbool.h
868 Приложение Б
Общие определения: stddef.h
В этом заголовочном файле определен ряд типов и макросов, которые показаны в табл. B.V.24 и B.V.25.
Таблица 6.V.24. Типы в stddef.h
Интервал:
Закладка: