C es un lenguaje de forma libre . Eso significa que puede formatearlo de muchas maneras y seguirá siendo un programa legal.
Por ejemplo, una declaración como
a = b * c;
podría escribirse como
a=b*c;
o me gusta
a
=
b
*
c
;
Entonces, cuando el compilador vea las líneas
temp = *a
*a = *b;
piensa que significa
temp = *a * a = *b;
Por supuesto, esa no es una expresión válida y el compilador se quejará de eso en lugar del punto y coma que falta. La razón por la que no es válido es porque a
es un puntero a una estructura, por lo que *a * a
está tratando de multiplicar una instancia de estructura ( *a
) con un puntero a una estructura ( a
).
Si bien el compilador no puede detectar el punto y coma que falta, también informa el error totalmente no relacionado en la línea incorrecta. Es importante notar esto porque no importa cuánto mire la línea donde se informa el error, no hay ningún error allí. A veces, problemas como este necesitarán que mire las líneas anteriores para ver si están bien y sin errores.
A veces, incluso tiene que buscar en otro archivo para encontrar el error. Por ejemplo, si un archivo de encabezado está definiendo una estructura lo último que lo hace en el archivo de encabezado, y falta el punto y coma que termina la estructura, entonces el error no estará en el archivo de encabezado sino en el archivo que incluye el archivo de encabezado.
Y a veces las cosas empeoran aún más: si incluye dos (o más) archivos de encabezado y el primero contiene una declaración incompleta, lo más probable es que el error de sintaxis se indique en el segundo archivo de encabezado.
Relacionado con esto está el concepto de errores de seguimiento . Algunos errores, generalmente debido a que faltan puntos y comas, se informan como errores múltiples . Por eso es importante comenzar desde arriba al corregir errores, ya que corregir el primer error puede hacer que desaparezcan varios errores.
Por supuesto, esto puede llevar a corregir un error a la vez y a recompilaciones frecuentes que pueden resultar engorrosas con proyectos grandes. Sin embargo, reconocer estos errores de seguimiento es algo que viene con la experiencia, y después de verlos varias veces, es más fácil descubrir los errores reales y corregir más de un error por recompilación.