O comportamento normal de CodeBlocks ao trabalhar em um único arquivo (em oposição a um projeto) é usar o nome do arquivo sem qualquer extensão como o nome do executável compilado. Portanto, hello.cpp
produzirá um binário denominado hello
. CodeBlocks verifica os timestamps dos arquivos para ver se a compilação é necessária. Isso é interrompido quando o arquivo não tem uma extensão: um arquivo de origem chamado hello
teria um arquivo binário chamado hello
do ponto de vista do CodeBlocks. Portanto, a verificação de timestamp falha, pois está comparando o arquivo para si mesmo. Portanto, CodeBlocks não compila o código e, em vez disso, tenta executá-lo diretamente, onde ele falha porque o arquivo de origem não é um executável. (Isso não será um problema para o código-fonte executável, como scripts shell).
Portanto, sempre salve o código-fonte C / C ++ com uma extensão apropriada ao usar CodeBlocks (e, em geral, também).