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
- El enum empieza en cero para el éxito.
- Una tabla paralela de cadenas convierte un código en mensaje.
- El miembro contador mantiene la tabla y el enum en sintonía.
Palabras clave y builtins usados aquí
NULLcharconstenumifintreturnstatictypedef
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.
Paso 1 de 2 en Errores y limpieza; paso 8 de 11 en APIs, errores y pruebas.