Pense em alguns dos problemas que podem ocorrer se não houver nova linha. De acordo com o padrão ANSI, o #include
de um arquivo no início insere o arquivo exatamente como está na frente do arquivo e não insere a nova linha #include <foo.h>
após o conteúdo do arquivo. Portanto, se você incluir um arquivo sem nova linha no final do analisador, ele será exibido como se a última linha de estivesse foo.h
na mesma linha que a primeira linha de foo.cpp
. E se a última linha de foo.h fosse um comentário sem uma nova linha? Agora, a primeira linha de foo.cpp
é comentada. Estes são apenas alguns exemplos dos tipos de problemas que podem surgir.
Só queria apontar as partes interessadas para a resposta de James abaixo. Embora a resposta acima ainda esteja correta para C, o novo padrão C ++ (C ++ 11) foi alterado para que esse aviso não seja mais emitido se você estiver usando C ++ e um compilador em conformidade com C ++ 11.
Do padrão C ++ 11 via postagem de James:
Um arquivo de origem que não esteja vazio e que não termine com um caractere de nova linha, ou que termine com um caractere de nova linha imediatamente precedido por um caractere de barra invertida antes de qualquer emenda, deve ser processado como se fosse um novo o caractere de linha foi anexado ao arquivo (C ++ 11 §2.2 / 1).
cat
um arquivo e ele não tem uma nova linha de fuga como o novo shell prompt aparecerá após a última linha do arquivo (ou seja, não na coluna 0)