O compilador subjacente (geralmente gcc ) usa a extensão filename para determinar que tipo de código o arquivo contém e, portanto, como compilá-lo (embora isso possa ser substituído usando a opção -x ).
Nesse caso, parece que você salvou o que parece ser o código C com o nome de arquivo untitled , que o compilador não sabe como manipular. Na verdade, parece que o CodeBlocks IDE também não sabe como lidar com isso, portanto, o padrão é tentar executá-lo como um script de shell.
Quando você dá ao seu arquivo uma extensão .cpp , o IDE e o compilador tratam-no como código C ++ e o arquivo é compilado com sucesso.
Observe que um arquivo .o é um arquivo de código objeto em vez de um programa executável: essa é essencialmente a diferença entre compilação e construção .