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

Пример

Целочисленные типы: 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. Самые быстрые типы с минимальной шириной

Читать дальше