La macro de longitud de arreglo en C
La macro que todo proyecto de C tiene, y el único lugar donde no debe usarse.
#include <stddef.h>
#define ARRAY_LEN(a) (sizeof(a) / sizeof((a)[0]))
int sum_all(void) {
int values[] = {2, 4, 6, 8, 10};
int total = 0;
for (size_t i = 0; i < ARRAY_LEN(values); i++) {
total += values[i];
}
return total;
}
size_t count_names(void) {
const char *names[] = {"ada", "grace", "alan"};
return ARRAY_LEN(names);
}
Cómo funciona
- Dividir el tamaño del arreglo entre el de un elemento da el conteo.
- Solo funciona donde el tipo del arreglo es visible.
- Sobre un puntero calcula un sinsentido en silencio.
Palabras clave y builtins usados aquí
charconstforintreturnsize_tvoid
El intento, en números
- Líneas
- 17
- Caracteres a escribir
- 329
- Tokens
- 101
- Ritmo de tres estrellas
- 95 tpm
Al ritmo de tres estrellas de 95 tokens por minuto, este intento toma unos 64 segundos.
Paso 3 de 4 en Macros; paso 3 de 12 en Preprocesador y encabezados.