Macro de la biblioteca C -EDOM

C 标准库 - <errno.h>Biblioteca estándar de C - <errno.h>

Descripción

Macro de la biblioteca CEDOMRepresenta un error de dominio, que ocurre cuando el parámetro de entrada está fuera del dominio definido por la función matemática; errno se establece en EDOM.

EDOMEs una macro de la biblioteca estándar de C, definida en el<errno.h>archivo de cabecera <errno.h>. Se utiliza para representar errores de dominio en los parámetros de funciones matemáticas, es decir, cuando los parámetros de la función exceden el dominio matemático definido. Esto suele ocurrir en funciones de la biblioteca matemática (comosqrt、log、asinetc.) cuando reciben parámetros de entrada no válidos.

Declaración

A continuación se muestra un ejemplo del uso deEDOMEDOM, que demuestra cómo manejar errores de dominio en los parámetros de funciones matemáticas:

#define EDOM some_value

Parámetros

  • NA

Valor de retorno

  • NA

Ejemplo

El siguiente ejemplo demuestra el uso de la macro EDOM.

Ejemplo

#include <stdio.h>
#include <math.h>
#include <errno.h>

int main() {
    double x = -1.0;
    double result;

    // Limpiar el error anterior
    errno = 0;

    // Llamar a la función sqrt; pasar un valor negativo provocará un error de dominio
    result = sqrt(x);

    if (errno == EDOM) {
        printf("Error: sqrt() domain error, input value is %f\n", x);
    } else {
        printf("The square root of %f is %f\n", x, result);
    }

    return 0;
}

Compilemos y ejecutemos el programa anterior, esto producirá el siguiente resultado:

The square root of -1.000000 is nan

En este ejemplo:

  1. Intentamos calcular la raíz cuadrada de -1, que es una operación fuera del dominio, porque los números negativos no tienen raíz cuadrada real.
  2. sqrtLa función detectará este error de dominio y estableceráerrnoenEDOM。
  3. Comprobamoserrnoel valor de errno, si esEDOMentonces se imprime el mensaje de error correspondiente.

Funciones matemáticas relacionadas

A continuación se muestran algunas funciones matemáticaserrnoParaEDOMque pueden establecer EDOM:

  • sqrt(x): cuandox < 0, se establece EDOM.errnoParaEDOM。
  • log(x): cuandox <= 0, se establece EDOM.errnoParaEDOM。
  • asin(x)yacos(x): cuandoxno está en el rango [-1, 1], se establece EDOM.errnoParaEDOM。
  • pow(x, y): cuandox < 0ademásyno es un entero, se establece EDOM.errnoParaEDOM。

Precauciones de uso

  1. Comprobar el valor de retorno: Después de llamar a una función matemática que pueda producir un error de dominio, se debe comprobar el valor de retorno, y cuando la función devuelve un valor especial (comoNaN), compruebe errno.errno。
  2. Inicializaciónerrno: Antes de llamar a la función, se debe establecererrnoen 0, para asegurar que el código de error fue generado por esta llamada y no sea un residuo de llamadas anteriores.
  3. Seguridad de hilos: En programas multiproceso,errnogeneralmente se implementa como almacenamiento local de hilo (Thread-Local Storage, TLS), asegurando que cada hilo tenga unerrnovalor independiente.

Otros códigos de error relacionados

Además deEDOM,<errno.h>también hay otros códigos de error relacionados con funciones matemáticas:

  • ERANGE: El resultado está fuera de rango. Por ejemplo, calcularexp(1000)puede causar un desbordamiento y estableceráerrnoenERANGE。
  • EILSEQ: Secuencia de bytes ilegal. Al procesar funciones de caracteres anchos o multibyte, los datos de entrada contienen secuencias de caracteres no válidas.

En resumen,EDOMes una macro importante para manejar errores de dominio en los parámetros de funciones matemáticas, que ayuda a los programadores a detectar y manejar parámetros de entrada no válidos. Mediante el uso adecuado deerrnoy sus macros relacionadas, se puede escribir código más robusto y confiable.

C 标准库 - <errno.h>Biblioteca estándar de C - <errno.h>

Otras extensiones