Avatar ·

Extensões de arquivos C++: .cc, .cpp, .cxx, .h — qual a diferença e o que escolher?

Olá a todos! Comecei a estudar C++ recentemente e escrevo programas simples no Visual Studio Code. Percebi que, ao criar um novo arquivo, sou oferecido a escolher entre várias extensões: .cpp, .cc, .cxx, e para cabeçalhos — .h, .hpp, .hxx. Estou acostumado a usar sempre .cpp e .h, porque foi assim no primeiro tutorial. Mas recentemente baixei um projeto open-source no GitHub, e todos os arquivos lá tinham extensão .cc. Tentei renomeá-los para .cpp, mas o compilador deu erros de linking — dizendo que não conseguia encontrar algumas funções. Tive que reverter. Agora estou confuso: essas extensões são intercambiáveis ou não? Se sim, por que o projeto em .cc não funcionou quando renomeei para .cpp? E se não, qual extensão é considerada 'correta' ou 'padrão'? Outra pergunta: a extensão influencia como o compilador processa o código? Por exemplo, ele pode confundir arquivos C e C++? Meu exemplo: escrevi uma classe simples `Cat` no arquivo `Cat.cc` e main em `main.cc`. Tudo compila com g++ main.cc Cat.cc -o app. Mas