Namespaces
Variants

Error handling

From cppreference.net
< c

Contenidos

Números de error

Definido en el encabezado <errno.h>
macro que se expande a una variable de número de error local al hilo compatible con POSIX
(macro variable)
macros para condiciones de error estándar compatibles con POSIX
(macro constante)

Aserciones

Definido en el encabezado <assert.h>
aborta el programa si la condición especificada por el usuario no es true . Puede desactivarse para builds de release
(macro de función)
(C11) (eliminado en C23)
emite un diagnóstico en tiempo de compilación si el valor de una expresión constante es false
(macro de palabra clave)

Verificación de límites

La biblioteca estándar proporciona versiones con verificación de límites de algunas funciones existentes ( gets_s , fopen_s , printf_s , strcpy_s , wcscpy_s , mbstowcs_s , qsort_s , getenv_s , etc). Esta funcionalidad es opcional y solo está disponible si __STDC_LIB_EXT1__ está definido. Las siguientes macros y funciones soportan esta funcionalidad.

Definido en el encabezado <errno.h>
Definido en el encabezado <stdio.h>
errno_t
(C11)
un typedef para el tipo int , utilizado para autodocumentar funciones que devuelven valores errno
(typedef)
Definido en el encabezado <stddef.h>
Definido en el encabezado <stdio.h>
Definido en el encabezado <stdlib.h>
Definido en el encabezado <string.h>
Definido en el encabezado <time.h>
Definido en el encabezado <wchar.h>
rsize_t
(C11)
un typedef para el mismo tipo que size_t , utilizado para autodocumentar funciones que verifican el rango de sus parámetros en tiempo de ejecución
(typedef)
Definido en el encabezado <stdint.h>
RSIZE_MAX
(C11)
tamaño máximo aceptable para funciones con verificación de límites, se expande a constante o variable que puede cambiar en tiempo de ejecución (ej. según cambia el tamaño de memoria actualmente asignado)
(macro variable)
Definido en el encabezado <stdlib.h>
establece el callback de error para funciones con verificación de límites
(función)
callback de aborto para las funciones con verificación de límites
(función)
callback de ignorar para las funciones con verificación de límites
(función)

Nota: las implementaciones de funciones con verificación de límites están disponibles como bibliotecas de código abierto Safe C y Slibc , y como parte de Watcom C. También existe un conjunto incompatible de funciones con verificación de límites disponible en Visual Studio.

(desde C11)

Notas

Desde C23, static_assert es en sí mismo una palabra clave, que también puede ser una macro predefinida, por lo que <assert.h> ya no lo proporciona.

Referencias

Contenido extendido
  • Estándar C23 (ISO/IEC 9899:2024):
  • 7.2 Diagnostics <assert.h> (p: TBD)
  • 7.5 Errors <errno.h> (p: TBD)
  • 7.19 Common definitions <stddef.h> (p: TBD)
  • 7.20 Integer types <stdint.h> (p: TBD)
  • 7.21 Input/output <stdio.h> (p: TBD)
  • 7.22 General utilities <stdlib.h> (p: TBD)
  • K.3.1.3 Use of errno (p: TBD)
  • K.3.2/2 errno_t (p: TBD)
  • K.3.3/2 rsize_t (p: TBD)
  • K.3.4/2 RSIZE_MAX (p: TBD)
  • 7.31.3 Errors <errno.h> (p: TBD)
  • 7.31.10 Integer types <stdint.h> (p: TBD)
  • 7.31.11 Input/output <stdio.h> (p: TBD)
  • 7.31.12 General utilities <stdlib.h> (p: TBD)
  • Estándar C17 (ISO/IEC 9899:2018):
  • 7.2 Diagnostics <assert.h> (p: TBD)
  • 7.5 Errors <errno.h> (p: TBD)
  • 7.19 Common definitions <stddef.h> (p: TBD)
  • 7.20 Integer types <stdint.h> (p: TBD)
  • 7.21 Input/output <stdio.h> (p: TBD)
  • 7.22 General utilities <stdlib.h> (p: TBD)
  • K.3.1.3 Use of errno (p: TBD)
  • K.3.2/2 errno_t (p: TBD)
  • K.3.3/2 rsize_t (p: TBD)
  • K.3.4/2 RSIZE_MAX (p: TBD)
  • 7.31.3 Errors <errno.h> (p: TBD)
  • 7.31.10 Integer types <stdint.h> (p: TBD)
  • 7.31.11 Input/output <stdio.h> (p: TBD)
  • 7.31.12 General utilities <stdlib.h> (p: TBD)
  • Estándar C11 (ISO/IEC 9899:2011):
  • 7.2 Diagnostics <assert.h> (p: 186-187)
  • 7.5 Errors <errno.h> (p: 205)
  • 7.19 Common definitions <stddef.h> (p: 288)
  • 7.20 Integer types <stdint.h> (p: 289-295)
  • 7.21 Input/output <stdio.h> (p: 296-339)
  • 7.22 General utilities <stdlib.h> (p: 340-360)
  • K.3.1.3 Use of errno (p: 584)
  • K.3.2/2 errno_t (p: 585)
  • K.3.3/2 rsize_t (p: 585)
  • K.3.4/2 RSIZE_MAX (p: 585)
  • 7.31.3 Errors <errno.h> (p: 455)
  • 7.31.10 Integer types <stdint.h> (p: 456)
  • 7.31.11 Input/output <stdio.h> (p: 456)
  • 7.31.12 General utilities <stdlib.h> (p: 456)
  • Estándar C99 (ISO/IEC 9899:1999):
  • 7.2 Diagnostics <assert.h> (p: 169)
  • 7.5 Errors <errno.h> (p: 186)
  • 7.26.3 Errors <errno.h> (p: 401)
  • 7.26.8 Integer types <stdint.h> (p: 401)
  • 7.26.9 Input/output <stdio.h> (p: 402)
  • 7.26.10 General utilities <stdlib.h> (p: 402)
  • Estándar 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>

Véase también

define el mecanismo de manejo de errores utilizado por las funciones matemáticas comunes
(macro constante)
Documentación de C++ para Manejo de errores