typestar

Aserciones en tiempo de compilación en C

_Static_assert verifica una expresión constante al compilar: las builds malas fallan temprano.

#include <limits.h>
#include <stdint.h>

typedef struct {
    uint32_t id;
    uint32_t flags;
} Header;

_Static_assert(sizeof(Header) == 8, "Header must stay eight bytes");
_Static_assert(CHAR_BIT == 8, "this code assumes octets");
_Static_assert(sizeof(int) >= 4, "int must hold a 32-bit value");

uint32_t header_id(const Header *h) {
    return h->id;
}

Cómo funciona

  1. Recibe una expresión constante y un mensaje.
  2. Los supuestos de disposición y tamaño son los sujetos habituales.
  3. No hay costo alguno en tiempo de ejecución.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
15
Caracteres a escribir
346
Tokens
76
Ritmo de tres estrellas
100 tpm

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

Escribe este fragmento

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

← Anterior Siguiente →