Директива
#pragma STDC FENV_ACCESS on включает доступ к этой среде, а директива
#pragma STDC FENV_ACCESS off
отключает его. Если прагма является внешней, она должна находиться перед любым внешним объявлением или же в начале составного блока. Она остается в силе до тех пор, пока не будет переключена другим экземпляром прагмы, либо до достижения конца файла (внешняя директива) или конца составного оператора (блочная директива).
В заголовочном файле fenv.h определены два типа, показанные в табл. B.V.6.
Таблица 6.V.6. Типы в fenv.h
В заголовочном файле fenv.h также определены макросы, представляющие несколько возможных исключений плавающей запятой и управляющих состояний. Реализации могут определять дополнительные макросы, назначая им имена, которые начинаются с FE_ и состоят из заглавных букв. В табл. B.V.7 приведены стандартные макросы исключений.
Справочные материалы 853
Таблица 6.V.7. Макросы в fenv.h
В табл. B.V.8 показаны прототипы стандартных функций из заголовочного файла fenv.h. Обратите внимание, что очень часто значения аргументов и возвращаемые значения соответствуют макросам из табл. B.V.7. Например, FE_UPWARD является подходящим аргументом для feset round().
Таблица 6.V.8. Прототипы в fenv.h
854 Приложение Б
Окончание табл. б. У. 8
Характеристики среды плавающей запятой: float.ь
В заголовочном файле float.h определено несколько макросов, представляющих разнообразные пределы и параметры. Эти макросы перечислены в табл. B.V.9; добавления, появившиеся в С11, выделены курсивом. Многие макросы имеют отношение к следующей модели представления с плавающей запятой:
Если самая первая цифра/>; является ненулевой (и х отлично от нуля), то такое число называется нормализованным числом с плавающей запятшм. Соответствующие объяснения приведены в разделе VIII этого приложения, в том числе и для ряда показанных макросов.
Таблица 6.V.9. Макросы в fenv.li
Справочные материалы 855
Продолжение табл. Б,У.9
Макрос
Описание
DBL_DECIMAL_DIG
Количество десятичных цифр для double, которые могут быть преобразованы из основания b в основание 10 и обратно в основание b без изменения значения (минимальное значение — 10)
LDBL_DECIMAL_DIG
Количество десятичных цифр для long double, которые могут быть преобразованы из основания b в основание 10 и обратно в основание b без изменения значения (минимальное значение — 10)
DECIMAL_DIG
Количество десятичных цифр для самого широкого поддерживаемого типа с плавающей запятой, которые могут быть преобразованы из основания b в основание 10 и обратно в основание b без изменения значения (минимальное значение — 10)
FLT_DIG
Количество десятичных цифр для float, которые могут быть преобразованы из основания 10 в основание b и обратно в основание 10 без изменения значения (минимальное значение — 6)
DBL_DIG
Количество десятичных цифр для double, которые могут быть преобразованы из основания 10 в основание b и обратно в основание 10 без изменения значения (минимальное значение — 10)
LDBL_DIG
Количество десятичных цифр для long double, которые могут быть преобразованы из основания 10 в основание b и обратно в основание 10 без изменения значения(минимальное значение — 10)