malloc, free, append
This commit is contained in:
+10
-3
@@ -2,8 +2,8 @@
|
||||
|
||||
## Estado actual
|
||||
|
||||
- **Fase 1** — Estructura del proyecto.
|
||||
- Paso actual: Makefile. Hecho: reglas con dependencias correctas, variables CC/CFLAGS/CPPFLAGS, clean, .PHONY, cero warnings con gcc y clang. Siguiente: .gitignore y carpeta build/ en un clon limpio; después reglas patrón.
|
||||
- **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).
|
||||
|
||||
@@ -20,13 +20,20 @@
|
||||
`static` para encapsular, `nm` y 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_buffer` es un tipo opaco: declarado en `escpos.h`, definido en `src/buffer.c`. Campos `uint8_t *data`, `size_t len`, `size_t cap`.
|
||||
- Estilo: nombres en `snake_case` y llave de apertura en línea aparte (estilo Allman) en funciones, structs y bloques. Aplicarlo a todo el proyecto, también a `escpos.c`.
|
||||
- Lo generado va en `build/`, que se crea en las recetas con `mkdir -p` y no se versiona.
|
||||
|
||||
## Pendiente / puntos débiles
|
||||
|
||||
- Hay binarios (`.o`, `.exe`) versionados en git. Falta `.gitignore`.
|
||||
- `.gitignore` creado. Siguen versionados `emulator/escpos-emu.exe` y `goruntime/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.
|
||||
|
||||
Reference in New Issue
Block a user