C est un langage de forme libre . Cela signifie que vous pouvez le formater de plusieurs façons et que ce sera toujours un programme légal.
Par exemple, une déclaration comme
a = b * c;
pourrait être écrit comme
a=b*c;
ou comme
a
=
b
*
c
;
Donc, quand le compilateur voit les lignes
temp = *a
*a = *b;
ça pense que ça veut dire
temp = *a * a = *b;
Ce n'est bien sûr pas une expression valide et le compilateur s'en plaindra au lieu du point-virgule manquant. La raison pour laquelle ce n'est pas valide est parce que a
c'est un pointeur vers une structure, donc *a * a
essaie de multiplier une instance de structure ( *a
) avec un pointeur vers une structure ( a
).
Bien que le compilateur ne puisse pas détecter le point-virgule manquant, il signale également l'erreur totalement indépendante sur la mauvaise ligne. Ceci est important à noter car peu importe combien vous regardez la ligne où l'erreur est signalée, il n'y a pas d'erreur. Parfois, des problèmes comme celui-ci vous obligeront à regarder les lignes précédentes pour voir si elles sont correctes et sans erreurs.
Parfois, vous devez même chercher dans un autre fichier pour trouver l'erreur. Par exemple, si un fichier d'en-tête définit une structure la dernière fois qu'il le fait dans le fichier d'en-tête et que le point-virgule terminant la structure est manquant, l'erreur ne sera pas dans le fichier d'en-tête mais dans le fichier qui comprend le fichier d'en-tête.
Et parfois, cela devient encore pire: si vous incluez deux (ou plus) fichiers d'en-tête et que le premier contient une déclaration incomplète, l'erreur de syntaxe sera très probablement indiquée dans le deuxième fichier d'en-tête.
Le concept des erreurs de suivi est lié à cela . Certaines erreurs, généralement dues à des points-virgules manquants, sont signalées comme des erreurs multiples . C'est pourquoi il est important de commencer par le haut lors de la correction des erreurs, car la correction de la première erreur peut faire disparaître plusieurs erreurs.
Cela peut bien sûr conduire à corriger une erreur à la fois et à des recompilations fréquentes, ce qui peut être fastidieux avec de grands projets. Cependant, reconnaître de telles erreurs de suivi est quelque chose qui vient avec l'expérience, et après les avoir vues plusieurs fois, il est plus facile de déterrer les vraies erreurs et de corriger plus d'une erreur par recompilation.