Inicializadores designados en C
C99 te deja nombrar los miembros y elementos que inicializas.
struct Settings {
int time_limit;
int editor_mode;
const char *theme;
};
struct Settings defaults(void) {
struct Settings s = {.time_limit = 60, .theme = "default"};
return s;
}
int sparse_sum(void) {
int weights[8] = {[0] = 5, [3] = 10, [7] = 1};
int total = 0;
for (int i = 0; i < 8; i++) {
total += weights[i];
}
return total;
}
Cómo funciona
- Nombrar un campo hace que el inicializador sobreviva un reordenamiento.
- Todo lo que no se nombra queda inicializado en cero.
- Los designadores de arreglo saltan adelante y dejan los huecos en cero.
Palabras clave y builtins usados aquí
charconstforintreturnstructvoid
El intento, en números
- Líneas
- 19
- Caracteres a escribir
- 333
- Tokens
- 111
- Ritmo de tres estrellas
- 90 tpm
Al ritmo de tres estrellas de 90 tokens por minuto, este intento toma unos 74 segundos.
Paso 3 de 4 en Valores y almacenamiento; paso 29 de 35 en Fundamentos del lenguaje.