typestar

Macros variádicas en C

__VA_ARGS__ reenvía cualquier número de argumentos; así funcionan las macros de logging.

#include <stdio.h>

#define LOG(fmt, ...) \
    fprintf(stderr, "[%s:%d] " fmt "\n", __FILE__, __LINE__, ##__VA_ARGS__)

#define TRACE() LOG("reached %s", __func__)

void noisy(int value) {
    LOG("starting");
    LOG("value is %d", value);
    TRACE();
}

Cómo funciona

  1. ... en la lista de parámetros captura el resto.
  2. __VA_ARGS__ se expande a ellos, comas incluidas.
  3. El ## inicial se traga la coma cuando no se pasó nada.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
12
Caracteres a escribir
240
Tokens
36
Ritmo de tres estrellas
100 tpm

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

Escribe este fragmento

Paso 2 de 3 en Manipulación de texto; paso 6 de 12 en Preprocesador y encabezados.

← Anterior Siguiente →