Namespaces
Variants

Error handling

From cppreference.net
< c

Содержание

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

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

Утверждения

Определено в заголовочном файле <assert.h>
прерывает выполнение программы, если заданное пользователем условие не true . Может быть отключено для релизных сборок
(функциональный макрос)
(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)
typedef для типа int , используется для самодокументирования функций, возвращающих значения errno
(typedef)
Определено в заголовке <stddef.h>
Определено в заголовке <stdio.h>
Определено в заголовке <stdlib.h>
Определено в заголовке <string.h>
Определено в заголовке <time.h>
Определено в заголовке <wchar.h>
rsize_t
(C11)
typedef для того же типа, что и size_t , используется для самодокументирования функций, проверяющих границы параметров во время выполнения
(typedef)
Определено в заголовке <stdint.h>
RSIZE_MAX
(C11)
максимально допустимый размер для функций с проверкой границ, раскрывается в константу или переменную, которая может изменяться во время выполнения (например, при изменении размера выделенной памяти)
(макропеременная)
Определено в заголовке <stdlib.h>
устанавливает callback-функцию обработки ошибок для функций с проверкой границ
(функция)
callback-функция аварийного завершения для функций с проверкой границ
(функция)
callback-функция игнорирования для функций с проверкой границ
(функция)

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

(начиная с C11)

Примечания

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

Ссылки

Расширенное содержимое
  • Стандарт C23 (ISO/IEC 9899:2024):
  • 7.2 Diagnostics <assert.h> (стр: TBD)
  • 7.5 Errors <errno.h> (стр: TBD)
  • 7.19 Common definitions <stddef.h> (стр: TBD)
  • 7.20 Integer types <stdint.h> (стр: TBD)
  • 7.21 Input/output <stdio.h> (стр: TBD)
  • 7.22 General utilities <stdlib.h> (стр: TBD)
  • K.3.1.3 Use of 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 Errors <errno.h> (стр: TBD)
  • 7.31.10 Integer types <stdint.h> (стр: TBD)
  • 7.31.11 Input/output <stdio.h> (стр: TBD)
  • 7.31.12 General utilities <stdlib.h> (стр: TBD)
  • Стандарт C17 (ISO/IEC 9899:2018):
  • 7.2 Diagnostics <assert.h> (стр: TBD)
  • 7.5 Errors <errno.h> (стр: TBD)
  • 7.19 Common definitions <stddef.h> (стр: TBD)
  • 7.20 Integer types <stdint.h> (стр: TBD)
  • 7.21 Input/output <stdio.h> (стр: TBD)
  • 7.22 General utilities <stdlib.h> (стр: TBD)
  • K.3.1.3 Use of 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 Errors <errno.h> (стр: TBD)
  • 7.31.10 Integer types <stdint.h> (стр: TBD)
  • 7.31.11 Input/output <stdio.h> (стр: TBD)
  • 7.31.12 General utilities <stdlib.h> (стр: TBD)
  • Стандарт C11 (ISO/IEC 9899:2011):
  • 7.2 Diagnostics <assert.h> (стр: 186-187)
  • 7.5 Errors <errno.h> (стр: 205)
  • 7.19 Common definitions <stddef.h> (стр: 288)
  • 7.20 Integer types <stdint.h> (стр: 289-295)
  • 7.21 Input/output <stdio.h> (стр: 296-339)
  • 7.22 General utilities <stdlib.h> (стр: 340-360)
  • K.3.1.3 Use of 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 Errors <errno.h> (стр: 455)
  • 7.31.10 Integer types <stdint.h> (стр: 456)
  • 7.31.11 Input/output <stdio.h> (стр: 456)
  • 7.31.12 General utilities <stdlib.h> (стр: 456)
  • Стандарт C99 (ISO/IEC 9899:1999):
  • 7.2 Diagnostics <assert.h> (стр: 169)
  • 7.5 Errors <errno.h> (стр: 186)
  • 7.26.3 Errors <errno.h> (стр: 401)
  • 7.26.8 Integer types <stdint.h> (стр: 401)
  • 7.26.9 Input/output <stdio.h> (стр: 402)
  • 7.26.10 General utilities <stdlib.h> (стр: 402)
  • Стандарт C89/C90 (ISO/IEC 9899:1990):
  • 4.2 DIAGNOSTICS <assert.h>
  • 4.1.3 Errors <errno.h>
  • 4.13.1 Errors <errno.h>
  • 4.13.6 Input/output <stdio.h>
  • 4.13.7 General utilities <stdlib.h>

Смотрите также

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