Erro de compilação - Compilation error

O erro de compilação refere-se a um estado em que um compilador falha em compilar uma parte do código-fonte de um programa de computador , seja devido a erros no código ou, mais incomum, devido a erros no próprio compilador. Uma mensagem de erro de compilação geralmente ajuda os programadores a depurar o código-fonte. Embora as definições de compilação e interpretação possam ser vagas, geralmente os erros de compilação referem-se apenas à compilação estática e não à compilação dinâmica . No entanto, é importante observar que a compilação dinâmica ainda pode tecnicamente ter erros de compilação, embora muitos programadores e fontes possam identificá-los como erros de tempo de execução. A maioria dos compiladores just-in-time , como o mecanismo Javascript V8 , refere-se ambiguamente aos erros de compilação como erros de sintaxe, uma vez que os verificam em tempo de execução .

Exemplos

Erros comuns de compilação C ++

  • Identificador não declarado, por exemplo:

doy.cpp: In function `int main()': doy.cpp:25: `DayOfYear' undeclared (first use this function)

Isso significa que a variável "DayOfYear" está tentando ser usada antes de ser declarada.

  • Função comum não declarada, por exemplo:

xyz.cpp: In function `int main()': xyz.cpp:6: `cout' undeclared (first use this function)

Isso significa que o programador provavelmente se esqueceu de incluir iostream .

  • Erro de análise, por exemplo:

somefile.cpp:24: parse error before `something'

Isso pode significar que falta um ponto e vírgula no final da instrução anterior.

Erros internos do compilador

Um erro interno do compilador (comumente abreviado como ICE) é um erro que ocorre não devido ao código-fonte errado, mas sim devido a um bug no próprio compilador. Às vezes, eles podem ser contornados fazendo pequenas e insignificantes alterações no código-fonte em torno da linha indicada pelo erro (se essa linha for indicada), mas às vezes alterações maiores devem ser feitas, como refatorar o código, para evitar certas construções. Usar um compilador diferente ou uma versão diferente do compilador pode resolver o problema e ser uma solução aceitável em alguns casos. Quando um erro interno do compilador é alcançado, muitos compiladores não exibem um erro padrão, mas em vez disso exibem uma versão reduzida, com arquivos adicionais anexados, que são fornecidos apenas para erros internos do compilador. Isso é para garantir que o programa não trave ao registrar o erro, o que tornaria a solução do erro quase impossível. Os arquivos adicionais anexados para erros internos do compilador geralmente têm formatos especiais que podem ser salvos, como .dump para Java . Esses formatos geralmente são mais difíceis de analisar do que os arquivos normais, mas ainda podem ter informações muito úteis para resolver o bug que está causando o travamento.

Exemplo de um erro interno do compilador:

somefile.c:1001: internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://bugs.gentoo.org/> for instructions.

Referências