Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Regla 0x6002h: Compilá con frecuencia y resolvé el primer error antes de continuar

Proceso, diseno y construccion sistematica (0x60XX)

Universidad Nacional de Río Negro

0x6002h: Compilá con frecuencia y resolvé el primer error antes de continuar

Enunciado normativo

DEBE compilarse el programa cada vez que se completa una unidad de trabajo pequeña. Ante varios errores, DEBE corregirse primero el primer error reportado y volver a compilar; NO DEBE intentarse corregir todos los errores a la vez leyendo sólo el listado.

¿Por qué existe esta regla?

El problema

El compilador emite diagnósticos en cascada: un solo error sintáctico puede generar decenas de errores “falsos” que desaparecen al corregir el primero. Si el estudiante intenta arreglarlos todos, edita código que no estaba roto y convierte un error en varios.

Además, cuanto más código se escribe sin compilar, más grande es el intervalo en el que se introdujo un error y más difícil resulta atribuirlo a una decisión concreta. Compilar seguido convierte la depuración en una búsqueda sobre el último cambio, no sobre toda la sesión.

Consecuencias de violarla

Tipo de consecuenciaEfecto concreto
Errores en cascadaSe “corrigen” errores inexistentes y se introducen nuevos.
DepuraciónEl error puede estar en cualquiera de las últimas cien líneas.
FrustraciónEl estudiante percibe que “todo está mal” cuando había un solo problema.
RegresionesCambios grandes sin punto de control no se pueden revertir selectivamente.

Fundamento en la cátedra

Es el complemento operativo de 0x5002h: Desarrollá y compilá siempre con todas las advertencias del compilador activadas: no alcanza con activar las advertencias, hay que usarlas en cada paso. La compilación frecuente es también la forma más barata de encontrar errores de tipos, firmas y #include antes de llegar al depurador.

Alcance y excepciones

Aplica a todo desarrollo, aunque el programa no esté terminado. Compilar un esqueleto incompleto es correcto y esperable. La excepción es el código generado por herramientas, que no se edita a mano.

Ejemplos exhaustivos

❌ Contraejemplo 1 — Escribir doscientas líneas y recién ahí compilar

int main(void)
{
    /* ... 180 líneas escritas de una sentada ... */
    return 0;
}
main.c:12: error: expected ';' before '}' token
main.c:34: error: 'n' undeclared (first use in this function)
main.c:35: error: (Each undeclared identifier is reported only once)
... 47 errores más ...

Por qué falla: casi todos los 47 errores derivan de un ; faltante en la línea 12. Corregirlo suele dejar el programa con uno o dos errores reales.

❌ Contraejemplo 2 — Corregir el último error del listado

El estudiante lee de abajo hacia arriba y arregla main.c:99. Vuelve a compilar y aparece un error idéntico en main.c:12. Perdió el tiempo en un síntoma.

✅ Ejemplo conforme 1 — Ciclo corto de compilación

gcc -Wall -Wextra -Werror -std=c11 -pedantic -c main.c -o main.o

Se compila después de cada función o bloque lógico. El primer error apunta al último fragmento escrito, que es el sospechoso natural.

✅ Ejemplo conforme 2 — Leer el primer diagnóstico completo

main.c:12:5: error: expected ';' before '}' token
   11 |     suma += valores[i]
      |                       ^
      |                       ;

Se lee la línea exacta, se interpreta el mensaje y se aplica la corrección sugerida (;), y recién entonces se vuelve a compilar.

⚠️ Casos límite

Cómo detectarla

HerramientaComandoSeñal
gcc / clanggcc -Wall -Wextra -Werror -std=c11 -c archivo.cCompilación limpia al terminar cada unidad.
makemakeRecompila sólo lo modificado; fomenta el ciclo corto.

Checklist de autocontrol

Reglas relacionadas