C é uma linguagem de forma livre . Isso significa que você pode formatá-lo de várias maneiras e ainda será um programa legal.
Por exemplo, uma declaração como
a = b * c;
poderia ser escrito como
a=b*c;
ou como
a
=
b
*
c
;
Então, quando o compilador vê as linhas
temp = *a
*a = *b;
pensa que significa
temp = *a * a = *b;
Obviamente, essa não é uma expressão válida e o compilador reclamará disso em vez da falta do ponto-e-vírgula. A razão de não ser válido é porque a
é um ponteiro para uma estrutura, portanto, *a * a
está tentando multiplicar uma instância de estrutura ( *a
) com um ponteiro para uma estrutura ( a
).
Embora o compilador não consiga detectar o ponto-e-vírgula ausente, ele também relata o erro totalmente não relacionado na linha errada. É importante notar isso porque não importa o quanto você olhe para a linha onde o erro é relatado, não há erro lá. Às vezes, problemas como esse exigirão que você examine as linhas anteriores para ver se estão corretas e sem erros.
Às vezes, você ainda precisa procurar em outro arquivo para encontrar o erro. Por exemplo, se um arquivo de cabeçalho está definindo uma estrutura da última vez que define no arquivo de cabeçalho, e o ponto-e-vírgula que encerra a estrutura está ausente, o erro não estará no arquivo de cabeçalho, mas no arquivo que inclui o arquivo de cabeçalho.
E às vezes fica ainda pior: se você incluir dois (ou mais) arquivos de cabeçalho, e o primeiro contiver uma declaração incompleta, muito provavelmente o erro de sintaxe será indicado no segundo arquivo de cabeçalho.
Relacionado a isso está o conceito de erros de acompanhamento . Alguns erros, normalmente devido à falta de ponto-e-vírgula, são relatados como múltiplos erros . É por isso que é importante começar do início ao corrigir os erros, pois corrigir o primeiro erro pode fazer com que vários erros desapareçam.
Isso, é claro, pode levar à correção de um erro por vez e recompilações frequentes, o que pode ser complicado em projetos grandes. Porém, reconhecer esses erros de acompanhamento é algo que vem com a experiência e, depois de vê-los algumas vezes, é mais fácil descobrir os erros reais e corrigir mais de um erro por recompilação.