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> больше не предоставляет его.

Ссылки

Дополнительное содержимое
  • Стандарт C23 (ISO/IEC 9899:2024):
    • 7.2 Диагностика <assert.h> (стр.: TBD)
    • 7.5 Ошибки <errno.h> (стр.: TBD)
    • 7.19 Общие определения <stddef.h> (стр.: TBD)
    • 7.20 Целочисленные типы <stdint.h> (стр.: TBD)
    • 7.21 Ввод-вывод <stdio.h> (стр.: TBD)
    • 7.22 Общие утилиты <stdlib.h> (стр.: TBD)
    • K.3.1.3 Использование errno (стр.: TBD)
    • K.3.2/2 errno_t (стр.: TBD)
    • K.3.3/2 rsize_t (стр.: TBD)
    • K.3.4/2 RSIZE_MAX (стр.: TBD)
    • 7.31.3 Ошибки <errno.h> (стр.: TBD)
    • 7.31.10 Целочисленные типы <stdint.h> (стр.: TBD)
    • 7.31.11 Ввод-вывод <stdio.h> (стр.: TBD)
    • 7.31.12 Общие утилиты <stdlib.h> (стр.: TBD)
  • Стандарт C17 (ISO/IEC 9899:2018):
    • 7.2 Диагностика <assert.h> (стр.: TBD)
    • 7.5 Ошибки <errno.h> (стр.: TBD)
    • 7.19 Общие определения <stddef.h> (стр.: TBD)
    • 7.20 Целочисленные типы <stdint.h> (стр.: TBD)
    • 7.21 Ввод-вывод <stdio.h> (стр.: TBD)
    • 7.22 Общие утилиты <stdlib.h> (стр.: TBD)
    • K.3.1.3 Использование errno (стр.: TBD)
    • K.3.2/2 errno_t (стр.: TBD)
    • K.3.3/2 rsize_t (стр.: TBD)
    • K.3.4/2 RSIZE_MAX (стр.: TBD)
    • 7.31.3 Ошибки <errno.h> (стр.: TBD)
    • 7.31.10 Целочисленные типы <stdint.h> (стр.: TBD)
    • 7.31.11 Ввод-вывод <stdio.h> (стр.: TBD)
    • 7.31.12 Общие утилиты <stdlib.h> (стр.: TBD)
  • Стандарт 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/c/error

Spec-Zone.ru

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