typestar

Un enum de errores en C

Los códigos de error con nombre se leen mejor que números mágicos, y mapean a mensajes.

typedef enum {
    ERR_OK = 0,
    ERR_NULL_ARGUMENT,
    ERR_OUT_OF_RANGE,
    ERR_OUT_OF_MEMORY,
    ERR_COUNT
} Error;

static const char *messages[ERR_COUNT] = {
    "ok",
    "null argument",
    "value out of range",
    "out of memory",
};

const char *error_message(Error e) {
    if (e < 0 || e >= ERR_COUNT) {
        return "unknown error";
    }
    return messages[e];
}

Error set_stars(int stars, int *out) {
    if (out == NULL) {
        return ERR_NULL_ARGUMENT;
    }
    if (stars < 0 || stars > 3) {
        return ERR_OUT_OF_RANGE;
    }
    *out = stars;
    return ERR_OK;
}

Cómo funciona

  1. El enum empieza en cero para el éxito.
  2. Una tabla paralela de cadenas convierte un código en mensaje.
  3. El miembro contador mantiene la tabla y el enum en sintonía.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
32
Caracteres a escribir
502
Tokens
128
Ritmo de tres estrellas
105 tpm

Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 73 segundos.

Escribe este fragmento

Paso 1 de 2 en Errores y limpieza; paso 8 de 11 en APIs, errores y pruebas.

← Anterior Siguiente →