No Unix, o novo caractere de linha é \n
e, no Windows, é \r\n
. \r
ou ^M
é o caractere de retorno de carro.
Se o arquivo for gravado em um editor no modo Windows, cada novo caractere de linha terá um caractere de retorno de carro. Se você disser ao seu editor (e se ele entender) tratar os novos caracteres de linha como no Windows, você não verá mais os caracteres ^M
.
Como alternativa, você pode executar dos2unix
na sua base de código para corrigir esse problema.
E, como você observou corretamente, você não veria nenhum problema na compilação, porque isso não é nenhum caractere extra especial no código, mas apenas uma incompatibilidade entre a interpretação de caracteres de nova linha no Windows e no Linux.