Spec-Zone.ru › C

Обработка ошибок

Номера ошибок

Определено в заголовке <errno.h>
errno
макрос, который расширяется до POSIX-совместимой переменной номера ошибки потока
(макропеременная)
E2BIG, EACCES, ..., EXDEV
макросы для стандартных POSIX-совместимых условий ошибок
(макроконстанта)

Утверждения

Определено в заголовке <assert.h>
assert
прерывает выполнение программы, если указанное пользователем условие не true. Может быть отключено для релизных сборок
(макрофункция)
static_assert
(C11)(удалено в C23)
выдает диагностическое сообщение на этапе компиляции, если значение константного выражения ложно
(макроключевое слово)

Проверка границ

Стандартная библиотека предоставляет версии функций с проверкой границ некоторых существующих функций (gets_s, fopen_s, printf_s, strcpy_s, wcscpy_s, mbstowcs_s, qsort_s, getenv_s, и т.д.). Эта функциональность необязательна и доступна только если __STDC_LIB_EXT1__ определено. Следующие макросы и функции поддерживают эту функциональность.

Определено в заголовке <errno.h>
Определено в заголовке <stdio.h>
errno_t
(C11)
псевдоним типа int, используемый для самодокументирования функций, возвращающих значения errno;
(псевдоним)
Определено в заголовке <stddef.h>
Определено в заголовке <stdio.h>
Определено в заголовке <stdlib.h>
Определено в заголовке <string.h>
Определено в заголовке <time.h>
Определено в заголовке <wchar.h>
rsize_t
(C11)
псевдоним типа, эквивалентного size_t, используемый для самодокументирования функций, проверяющих диапазон своих параметров во время выполнения
(псевдоним)
Определено в заголовке <stdint.h>
RSIZE_MAX
(C11)
максимальный допустимый размер для функций с проверкой границ, расширяется до константы или переменной, которая может изменяться во время выполнения (например, при изменении текущего размера выделенной памяти)
(макропеременная)
Определено в заголовке <stdlib.h>
set_constraint_handler_s
(C11)
задает обработчик ошибок для функций с проверкой границ
(функция)
abort_handler_s
(C11)
обработчик прерывания для функций с проверкой границ
(функция)
ignore_handler_s
(C11)
обработчик игнорирования для функций с проверкой границ
(функция)

Примечание: реализации функций с проверкой границ доступны как открытые исходные коды Safe C и Slibc, а также как часть Watcom C. Существует также несовместимый набор функций с проверкой границ, доступных в Visual Studio.

(с C11)

Примечания

С C23, static_assert само по себе является ключевым словом, которое также может быть предопределённым макросом, поэтому <assert.h> больше не предоставляет его.

Ссылки

  • Стандарт C11 (ISO/IEC 9899:2011):
    • 7.2 Диагностика <assert.h> (с. 186-187)
    • 7.5 Ошибки <errno.h> (с. 205)
    • 7.19 Общие определения <stddef.h> (с. 288)
    • 7.20 Целочисленные типы <stdint.h> (с. 289-295)
    • 7.21 Ввод/вывод <stdio.h> (с. 296-339)
    • 7.22 Общие утилиты <stdlib.h> (с. 340-360)
    • K.3.1.3 Использование errno (с. 584)
    • K.3.2/2 errno_t (с. 585)
    • K.3.3/2 rsize_t (с. 585)
    • K.3.4/2 RSIZE_MAX (с. 585)
    • 7.31.3 Ошибки <errno.h> (с. 455)
    • 7.31.10 Целочисленные типы <stdint.h> (с. 456)
    • 7.31.11 Ввод/вывод <stdio.h> (с. 456)
    • 7.31.12 Общие утилиты <stdlib.h> (с. 456)
  • Стандарт C99 (ISO/IEC 9899:1999):
    • 7.2 Диагностика <assert.h> (с. 169)
    • 7.5 Ошибки <errno.h> (с. 186)
    • 7.26.3 Ошибки <errno.h> (с. 401)
    • 7.26.8 Целочисленные типы <stdint.h> (с. 401)
    • 7.26.9 Ввод/вывод <stdio.h> (с. 402)
    • 7.26.10 Общие утилиты <stdlib.h> (с. 402)
  • Стандарт C89/C90 (ISO/IEC 9899:1990):
    • 4.2 ДИАГНОСТИКА <assert.h>
    • 4.1.3 Ошибки <errno.h>
    • 4.13.1 Ошибки <errno.h>
    • 4.13.6 Ввод/вывод <stdio.h>
    • 4.13.7 Общие утилиты <stdlib.h>

См. также

math_errhandlingMATH_ERRNOMATH_ERREXCEPT
(C99)(C99)(C99)
определяет механизм обработки ошибок, используемый общими математическими функциями
(макроконстанта)
Документация C++ для Обработки ошибок

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/error

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API