×
Traktatov.net » Язык программирования C [Лекции и упражнения, 6-е изд.] » Читать онлайн
Страница 535 из 557 Настройки

Заголовочный файл 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


Пример

Целочисленные типы: stdint.h

В этом заголовочном файле с помощью средства typedef создаются имена целочисленных типов, которые указывают свойства целых чисел. Файл stdint.h включен в заголовочный файл inttypes.h, который предоставляет макросы для использования в вызовах функций ввода-вывода. Возможные применения этих типов кратко описаны в разделе VI данного приложения.

Типы с точной шириной

Один из наборов typedef идентифицирует типы с точными размерами. Их имена и размеры перечислены в табл. B.V.26. Однако обратите внимание, что не все системы могут поддерживать все эти типы.


Справочные материалы 869

Таблица 6.V.26. Типы с точной шириной


Типы с минимальной шириной

Типы с минимальной шириной гарантируют, что тип имеет размер, равный, как минимум, определенному количеству битов. Типы с минимальной шириной перечислены в табл. Б.У27. Такие типы существуют всегда.

Таблица 6.V.27. Типы с минимальной шириной


Самые быстрые типы с минимальной шириной

В отдельной системе некоторые представления целых чисел могут быть быстрее других. Поэтому в stdint.h также определены самые быстрые типы для представления, по крайней мере, определенного количества битов. В табл. B.V.28 перечислены наиболее быстрые типы с минимальной шириной. Такие типы также существуют всегда. В некоторых случаях может отсутствовать очевидный выбор для самого быстрого типа, тогда система просто указывает один из возможных вариантов.

Таблица 6.V.28. Самые быстрые типы с минимальной шириной



870 Приложение Б

Типы с максимальной шириной

В заголовочном файле stdint.h также определены типы с максимальной шириной. Переменная такого типа может содержать любое целочисленное значение, возможное для системы, с учетом знака. Эти типы перечислены в табл. BV.29.