2.0 KiB
2.0 KiB
Progreso
Estado actual
- Fase 2 — Buffer dinámico. (Fase 1 cerrada en Fedora; falta probar en Windows.)
- Paso actual: 2.2, escpos_buffer_append_byte con realloc y duplicado de capacidad.
- Entorno activo: Fedora 42 nativo (gcc 15.2, clang 20, make 4.4, gdb 17, valgrind 3.26).
Hecho
include/escpos.h+src/escpos.cconescpos_version(), yhello.cque la usa. Compila y enlaza a mano en Windows y en Fedora.samples/hello_world.bin: ESC @, texto, LF, ESC d 5, GS V 0.- Emulador ESC/POS en Go (
emulator/) para probar sin gastar papel.
Conceptos de C aprendidos
- Etapas de compilación, unidades de traducción, cabeceras, include guards,
staticpara encapsular,nmy errores del enlazador. - Cadenas terminadas en
'\0',const char *. - Memoria virtual de un proceso, modo usuario y modo núcleo.
- Make: reglas, dependencias por fechas, variables, regla patrón con $@ $< $^, .PHONY.
- Pila y montón, malloc/free, NULL, propiedad de punteros, tipo opaco, typedef,
->, uint8_t/size_t, Valgrind.
Decisiones de diseño
- Prefijo
escpos_para toda la API pública. escpos_bufferes un tipo opaco: declarado enescpos.h, definido ensrc/buffer.c. Camposuint8_t *data,size_t len,size_t cap.- Estilo: nombres en
snake_casey llave de apertura en línea aparte (estilo Allman) en funciones, structs y bloques. Aplicarlo a todo el proyecto, también aescpos.c. - Lo generado va en
build/, que se crea en las recetas conmkdir -py no se versiona.
Pendiente / puntos débiles
.gitignorecreado. Siguen versionadosemulator/escpos-emu.exeygoruntime/goruntime.exe.- Ficheros sin salto de línea final: corregido; editor configurado.
- Make: costó entender que va hacia atrás desde el objetivo, y que una regla patrón es una plantilla. Repasar con la sección de docs/06-make.md.
- Punteros: le cuesta saber cuándo hace falta
*y cuándo no (también le pasaba en Go). Reforzar con ejemplos de su propio código. - Impresoras físicas: sin registrar marca y modelo.