typestar

assert y NDEBUG en C

assert documenta un invariante y lo verifica, hasta que NDEBUG lo elimina por completo.

#include <assert.h>
#include <stddef.h>

int average(const int *values, size_t n) {
    assert(values != NULL);
    assert(n > 0);

    long total = 0;
    for (size_t i = 0; i < n; i++) {
        total += values[i];
    }
    return (int) (total / (long) n);
}

void invariants(void) {
    int values[3] = {1, 2, 3};
    int mean = average(values, 3);
    assert(mean == 2);
    (void) mean;
}

Cómo funciona

  1. Un assert que falla imprime la expresión y aborta.
  2. Definir NDEBUG elimina todos los assert al compilar.
  3. Así que nunca pongas un efecto secundario adentro de uno.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
20
Caracteres a escribir
346
Tokens
121
Ritmo de tres estrellas
100 tpm

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

Escribe este fragmento

Paso 1 de 2 en Aserciones; paso 10 de 12 en Preprocesador y encabezados.

← Anterior Siguiente →