Handles opacos en C
El header declara un tipo incompleto, así que quien llama no ve los campos.
#include <stdlib.h>
typedef struct Counter Counter;
struct Counter {
long value;
long limit;
};
Counter *counter_new(long limit) {
Counter *c = malloc(sizeof *c);
if (c != NULL) {
c->value = 0;
c->limit = limit;
}
return c;
}
int counter_bump(Counter *c) {
if (c->value >= c->limit) {
return 0;
}
c->value++;
return 1;
}
void counter_free(Counter *c) {
free(c);
}
Cómo funciona
- Un struct con declaración adelantada es un tipo opaco.
- Solo el archivo de implementación tiene la definición.
- Toda operación pasa por funciones, así la disposición queda privada.
Palabras clave y builtins usados aquí
NULLifintlongreturnsizeofstructtypedefvoid
El intento, en números
- Líneas
- 29
- Caracteres a escribir
- 368
- Tokens
- 116
- Ritmo de tres estrellas
- 105 tpm
Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 66 segundos.
Paso 1 de 3 en Encapsulación; paso 5 de 11 en APIs, errores y pruebas.