C++ Editores e IDEs
Código C++ é texto puro: dá para escrever no Bloco de Notas. Mas um bom editor de código faz a diferença entre sofrer e aprender: ele pinta cada parte do código de uma cor, avisa do erro enquanto você digita, completa nomes compridos como std::vector e compila com uma tecla. Nesta aula você vai conhecer os editores e IDEs mais usados para C++, configurar o VS Code para o C++23, compilar por dentro dele e saber os cuidados com o arquivo que evitam dor de cabeça.
- A diferença entre editor de texto, editor de código e IDE.
- Configurar o VS Code: as extensões C/C++ da Microsoft e clangd, e o padrão C++23.
- Compilar pelo terminal integrado e com uma tarefa (
tasks.json) ligada ao atalho Ctrl+Shift+B. - O que oferecem o CLion, o Visual Studio, o Code::Blocks e o Vim, e qual escolher.
- Os cuidados com o arquivo: extensão
.cpp, UTF-8 e salvar antes de compilar.
Esta aula não tem capturas de tela: os menus mudam a cada versão, e o guia descreve o caminho pelo nome dos botões. As saídas de terminal foram produzidas na máquina da Ana, que tem o VS Code 1.141.
A ideia: caneta, caderno e estojo completo
| Tipo | Comparação | O que faz | Exemplos |
|---|---|---|---|
| Editor de texto | Uma caneta e uma folha | Só escreve e salva texto. | Bloco de Notas, gedit, nano |
| Editor de código | Um caderno com régua, marca-texto e corretor | Cores por tipo de palavra, numeração de linhas, completar nomes, marcar erros; com extensões, compila e depura. | VS Code, Vim, Neovim, Sublime Text, Zed |
| IDE (Integrated Development Environment, "ambiente de desenvolvimento integrado") | O estojo completo | Tudo do editor de código, mais projetos, compilação, depurador e ferramentas de análise, já configurados e integrados. | CLion, Visual Studio, Code::Blocks |
Importante: nenhum deles é o compilador. O editor só ajuda a escrever; quem transforma o código em programa continua sendo o g++, o clang++ ou o cl da Microsoft, que você instalou na aula Instalar no Linux ou Instalar no Windows e macOS. A exceção são algumas IDEs (Visual Studio, Code::Blocks para Windows, CLion para Windows) que já trazem um compilador junto.
Por que um editor de código ajuda tanto
Veja um erro que todo iniciante comete: esquecer de fechar as aspas. A Ana escreveu "Olá, mundo!\n; (o " do fim sumiu):
#include <iostream>
int main() {
std::cout << "Olá, mundo!\n;
std::cout << "Tchau!\n";
}
Num editor de código, o problema salta aos olhos antes de compilar: o texto entre aspas tem uma cor própria, e a cor "vaza" até o fim da linha, ou as aspas da linha seguinte ficam com a cor trocada. O editor também sublinha o erro em vermelho. Sem essa ajuda, a Ana só descobre ao compilar, e o g++ responde com uma avalanche:
$ g++ -std=c++23 -Wall -Wextra aspas.cpp -o aspas 2>&1 | wc -l
391 « 391 linhas de mensagens!
$ g++ -std=c++23 -Wall -Wextra aspas.cpp -o aspas 2>&1 | head -6
aspas.cpp:4:18: warning: missing terminating " character
4 | std::cout << "Olá, mundo!\n;
| ^
aspas.cpp:4:18: error: missing terminating " character « a primeira mensagem diz tudo
4 | std::cout << "Olá, mundo!\n;
| ^~~~~~~~~~~~~~~
O 2>&1 | wc -l conta as linhas da mensagem (as mensagens do compilador saem por um canal separado, e o 2>&1 as junta à saída normal), e o head -6 mostra só as seis primeiras. A primeira mensagem já diz o problema: missing terminating " character, "falta o caractere " de fechamento", na linha 4, coluna 18. As outras 385 linhas são consequência: sem as aspas fechadas, o g++ se perdeu e tentou entender o resto de todo jeito. Regra de ouro, que a aula Lendo Erros do Compilador detalha: leia e conserte a primeira mensagem, e compile de novo.
Experimente aqui. O editor do guia também pinta o código, e o compilador dele, o Clang, costuma ser mais econômico nas mensagens:
Missão: rode e leia o erro. Repare nas cores da linha 4: o texto "vaza". Feche as aspas no lugar certo (antes do ;, depois do \n) e rode de novo: devem aparecer as duas linhas.
#include <iostream>
int main() {
std::cout << "Olá, mundo!\n;
std::cout << "Tchau!\n";
}
#include <iostream>
int main() {
std::cout << "Olá, mundo!\n";
std::cout << "Tchau!\n";
}
VS Code
O Visual Studio Code (VS Code) é um editor de código gratuito da Microsoft, para Windows, Linux e macOS. Sozinho, ele só pinta o código; com as extensões certas, vira um ambiente completo para C++. É o editor mais usado do mundo e o recomendado para seguir o guia. Não confunda com o Visual Studio (sem "Code"), a IDE pesada só para Windows.
Instalando
Baixe em code.visualstudio.com (no Ubuntu e no Debian, o arquivo .deb; no Fedora, o .rpm; no Windows e no macOS, o instalador). Depois de instalado, o comando code funciona no terminal:
$ code --version 1.141.0 « a versão do VS Code 2a59476c9bfcb90b3ddc372c36762471b7dfad1c « o código da compilação (pode ignorar) x64 « a arquitetura: PC de 64 bits
Para abrir a pasta dos seus programas no VS Code: code ~/cpp (ou, no VS Code, Arquivo → Abrir Pasta). Trabalhe sempre com a pasta aberta, não com arquivos soltos: as configurações e as tarefas ficam na pasta.
As extensões: C/C++ ou clangd
Abra a aba Extensões (o ícone de quadradinhos na barra da esquerda, ou Ctrl+Shift+X) e procure pelo nome. Há duas boas opções, e você deve usar uma delas para entender o código:
| C/C++ (da Microsoft) | clangd (do projeto LLVM) | |
|---|---|---|
| Identificador | ms-vscode.cpptools | llvm-vs-code-extensions.vscode-clangd |
| O que faz | IntelliSense (completar, marcar erros, ir para a definição) e depuração com o GDB, o LLDB ou o depurador da Microsoft | Completar e marcar erros usando o próprio Clang: os erros sublinhados são exatamente os do compilador |
| Precisa instalar algo mais? | Não (só o compilador) | O programa clangd: sudo apt install clangd no Ubuntu; a extensão também oferece baixá-lo |
| Configurar o C++23 | Configuração C_Cpp.default.cppStandard = c++23 | Um arquivo compile_flags.txt na pasta (veja abaixo) |
| Bom para | Começar: funciona sem configurar quase nada, e traz o depurador | Quem quer avisos mais precisos e rápidos |
Pelo terminal, a instalação é um comando: code --install-extension ms-vscode.cpptools (ou o identificador do clangd). Se instalar as duas, a do clangd pergunta se pode desligar o IntelliSense da Microsoft: aceite, senão cada erro aparece duas vezes. Dá para manter a da Microsoft só para depurar.
Configurando o C++23
Os dois "corretores" precisam saber que você usa C++23; senão, sublinham o std::println como erro, mesmo ele compilando. Na extensão C/C++: abra as configurações (Ctrl+,), procure Cpp Standard e escolha c++23 no item C_Cpp › Default: Cpp Standard. Com o clangd: crie na pasta do projeto um arquivo chamado compile_flags.txt com as opções de compilação, uma por linha:
-std=c++23 -Wall -Wextra
O clangd lê esse arquivo e passa a analisar o código com as mesmas opções do comando padrão do guia. Em projetos com CMake, ele usa outro arquivo, gerado automaticamente (aula CMake).
Compilar pelo terminal integrado
O VS Code tem um terminal dentro dele: menu Terminal → Novo Terminal. Ele abre já na pasta do projeto. É o jeito mais simples e o que o guia recomenda no começo, porque você vê o comando e a saída completos, igual às aulas:
$ g++ -std=c++23 -Wall -Wextra ola.cpp -o ola $ ./ola Olá, mundo!
Quando há erro, segure Ctrl e clique no ola.cpp:4:18 da mensagem: o VS Code abre o arquivo exatamente na linha e na coluna do problema.
Compilar com uma tecla: o tasks.json
Digitar o comando toda vez cansa. O VS Code permite gravar um comando como uma tarefa (task), num arquivo chamado tasks.json, dentro de uma pasta .vscode no projeto. Crie .vscode/tasks.json com este conteúdo:
{
"version": "2.0.0",
"tasks": [
{
"label": "Compilar C++23",
"type": "shell",
"command": "g++",
"args": [
"-std=c++23", "-Wall", "-Wextra", "-g",
"${file}",
"-o", "${fileDirname}/${fileBasenameNoExtension}"
],
"problemMatcher": ["$gcc"],
"group": { "kind": "build", "isDefault": true }
}
]
}
| Linha | O que faz |
|---|---|
"version": "2.0.0" | A versão do formato do arquivo. Sempre 2.0.0. |
"label" | O nome da tarefa, que aparece nos menus. Escolha o que quiser. |
"type": "shell" | Roda o comando num terminal, como se você o digitasse. |
"command": "g++" | O programa. Troque por clang++, g++-14 ou g++-16 se for o seu caso. |
"args" | As opções, uma por item, entre aspas e separadas por vírgula. O -g guarda informações para o depurador (aula Depurar com o GDB). |
${file} | Uma variável do VS Code: o arquivo aberto na aba ativa, com o caminho completo. |
${fileDirname}/${fileBasenameNoExtension} | A pasta desse arquivo + o nome dele sem a extensão. Para ola.cpp, o executável vira ola, na mesma pasta. |
"problemMatcher": ["$gcc"] | Ensina o VS Code a ler as mensagens do g++: os erros aparecem na aba Problemas e sublinhados no código. |
"group": { "kind": "build", "isDefault": true } | Marca esta como a tarefa de compilação padrão, a do atalho Ctrl+Shift+B. |
Agora, com o ola.cpp aberto, tecle Ctrl+Shift+B. O VS Code abre o terminal e executa o comando montado com as variáveis. Na máquina da Ana, ele fica assim (rodado à mão, o resultado é o mesmo):
$ g++ -std=c++23 -Wall -Wextra -g /home/ana/cpp/ola.cpp -o /home/ana/cpp/ola $ ./ola Olá, mundo!
A tarefa compila; para rodar, use o terminal (./ola). A extensão C/C++ também tem um botão ▷ no canto da aba, que cria uma configuração própria na primeira vez (ela pergunta qual compilador usar). Ele funciona, mas a configuração que ele gera não tem -std=c++23 nem -Wall -Wextra: se for usá-lo, acrescente essas opções na lista args do tasks.json que ele criar.
Extensões como a Code Runner rodam o arquivo com um clique, mas usam um comando próprio, sem -std=c++23 e sem avisos. Resultado: o std::println "não existe" e os avisos que o guia ensina a ler nunca aparecem. Prefira o terminal ou o tasks.json, em que você vê e controla o comando.
Outras opções
CLion
O CLion, da JetBrains, é uma IDE feita só para C e C++, para Windows, Linux e macOS. Desde 2025, é gratuito para uso não comercial (estudar, projetos pessoais). Ele organiza tudo com o CMake: ao criar um projeto, escolha o padrão C++23, e ele grava set(CMAKE_CXX_STANDARD 23) no arquivo CMakeLists.txt. Tem análise de código muito boa (baseada no clangd), refatoração (renomear uma variável em todo o projeto) e depurador visual. No Windows, já vem com um compilador MinGW. É a melhor escolha para quem quer uma IDE completa sem ser preso ao Windows. No Linux: sudo snap install clion --classic, ou pelo site da JetBrains.
Visual Studio
O Visual Studio (Community é a edição gratuita) é a IDE da Microsoft, só para Windows. Vem com o compilador MSVC, o melhor depurador visual que existe para C++ e ferramentas para programas e jogos de Windows. A instalação e a escolha do C++23 estão em Instalar no Windows e macOS. Ponto de atenção: as mensagens de erro do MSVC são diferentes das do g++ mostradas no guia.
Code::Blocks
O Code::Blocks é uma IDE gratuita, leve e simples, muito usada em escolas e faculdades. No Windows, baixe a versão do instalador com mingw no nome, que já traz o g++. No Linux: sudo apt install codeblocks. Para o C++23: Settings → Compiler → Compiler settings e, na aba Other compiler options, escreva -std=c++23 -Wall -Wextra. Crie um projeto com File → New → Project → Console application e compile e rode com F9. A interface é mais antiga e o autocompletar é mais fraco, mas roda bem em computadores modestos.
Vim e Neovim
O Vim e o Neovim são editores de terminal, rapidíssimos, que se usam só com o teclado. A curva de aprendizado é íngreme (o famoso "como eu saio do Vim?": tecle Esc e digite :q), mas quem aprende não larga. Dentro do Vim, dá para compilar e rodar sem sair do editor:
:w :!g++ -std=c++23 -Wall -Wextra % -o %:r :!./%:r
- :w
- Salva o arquivo (write). Sem isso, o g++ compila a versão antiga, a que está no disco.
- :!
- Roda um comando do terminal sem sair do Vim.
- %
- O Vim troca pelo nome do arquivo aberto:
ola.cpp. - %:r
- O nome sem a extensão (root):
ola.
O Neovim (e o Vim, com um plugin) conversa com o clangd e ganha autocompletar e erros sublinhados, como o VS Code. Para escrever rápido no terminal sem aprender o Vim, o nano também serve: ele mostra os atalhos no rodapé (Ctrl+O salva, Ctrl+X sai).
Qual escolher?
| Se você… | Use |
|---|---|
| está começando e quer seguir o guia | VS Code + extensão C/C++ (ou clangd) + terminal integrado |
| quer uma IDE completa, em qualquer sistema | CLion |
| programa para Windows, jogos com Unreal ou usa o compilador da Microsoft | Visual Studio |
| tem um computador modesto ou a escola pede | Code::Blocks |
| vive no terminal ou edita em servidores | Vim/Neovim (ou nano, para o básico) |
| ainda não instalou nada | As caixas Experimente do guia (aula O Editor do Guia) |
A escolha do editor não é para sempre, e não muda nada no código: um ola.cpp escrito no Vim compila igual a um escrito no CLion.
Os cuidados com o arquivo
A extensão .cpp
Salve com a extensão .cpp. É ela que faz o editor ligar as cores e as ferramentas do C++ (e o gcc/g++ tratar o arquivo como C++). No Windows, cuidado com o Bloco de Notas, que gosta de acrescentar .txt: ola.cpp.txt. Ative "Extensões de nomes de arquivos" no menu Exibir do Explorador de Arquivos para ver o nome completo.
Codificação: UTF-8
Os acentos do guia ("Olá") só funcionam direito se o arquivo for salvo em UTF-8, a codificação usada pelo Linux, pelo macOS e pela web. O VS Code, o CLion e o Vim usam UTF-8 por padrão; a codificação aparece na barra de status, no canto de baixo do VS Code. A aula Acentos e UTF-8 explica o que acontece quando não é.
Salve antes de compilar
O compilador lê o arquivo do disco, não o que está na tela do editor. Se você mudou o código e não salvou, o g++ compila a versão anterior, e parece que "a mudança não funcionou". No VS Code, uma bolinha branca na aba indica arquivo não salvo. Dica: ative Arquivo → Salvamento Automático.
Quando dá errado
#include errors detected. Please update your includePath.
O que significa: "erros de #include detectados; atualize o caminho de inclusão". A extensão C/C++ não achou o <iostream>, quase sempre porque não achou o compilador, que é quem traz esses arquivos. O código provavelmente compila no terminal; é só o IntelliSense que está perdido (ilustrativo: a mensagem exata muda com a versão da extensão).
Como consertar: confira se g++ --version funciona no terminal integrado do VS Code. No Windows com MSYS2, o problema costuma ser o PATH (veja Instalar no Windows e macOS); feche e abra o VS Code depois de mudá-lo. Depois, use o comando C/C++: Select IntelliSense Configuration (Ctrl+Shift+P) e escolha o seu g++.
std::println em vermelho, mas o programa compila
O que significa: o corretor do editor está usando uma versão mais antiga do C++ que a do seu comando de compilação (o compilador, sem -std, usa C++17). Quem manda é o compilador: se compilou, o código está certo.
Como consertar: configure o C++23 no editor: C_Cpp.default.cppStandard = c++23 na extensão C/C++, ou o compile_flags.txt no clangd.
tasks.json aberto
$ g++ -std=c++23 -Wall -Wextra -g .vscode/tasks.json -o .vscode/tasks /usr/bin/x86_64-linux-gnu-ld.bfd:.vscode/tasks.json: file format not recognized; treating as linker script /usr/bin/x86_64-linux-gnu-ld.bfd:.vscode/tasks.json:1: syntax error collect2: error: ld returned 1 exit status
O que significa: o ${file} é o arquivo da aba ativa. Com o tasks.json na frente, a tarefa mandou o g++ compilar o próprio tasks.json. Como a extensão .json não é de código, o g++ o entregou ao ligador, que disse: "formato de arquivo não reconhecido; tratando como script do ligador" e, em seguida, "erro de sintaxe" na linha 1.
Como consertar: clique na aba do .cpp antes de teclar o atalho.
O que significa: uma de duas coisas. Ou o arquivo não foi salvo (o compilador leu a versão antiga do disco), ou ele não foi compilado de novo (você rodou o executável antigo; veja Como o C++ Vira Programa).
Como consertar: salvar (Ctrl+S), compilar, rodar, sempre nessa ordem.
Referência: atalhos do VS Code
| Atalho (Windows/Linux) | No macOS | O que faz |
|---|---|---|
| Ctrl+S | Cmd+S | Salvar |
| Ctrl+Shift+B | Cmd+Shift+B | Rodar a tarefa de compilação padrão |
| Ctrl+Shift+P | Cmd+Shift+P | Paleta de comandos: procurar qualquer comando pelo nome |
| Ctrl+Shift+X | Cmd+Shift+X | Extensões |
| Ctrl+, | Cmd+, | Configurações |
| Ctrl+Espaço | Ctrl+Espaço | Sugestões de autocompletar |
| F12 | F12 | Ir para a definição do nome sob o cursor |
| Ctrl+/ | Cmd+/ | Comentar ou descomentar a linha (aula Comentários) |
| Shift+Alt+F | Shift+Option+F | Formatar o documento (arrumar os espaços e o recuo) |
| F5 | F5 | Iniciar a depuração |
Exercícios
1. Qual destas afirmações é verdadeira?
2. Num tasks.json, o que o VS Code coloca no lugar de ${file}?
3. A g++ mostrou 391 linhas de erro depois que a Ana esqueceu de fechar umas aspas. O que ela deve fazer?
4. O arquivo do clangd
Qual é o nome do arquivo em que o clangd lê as opções de compilação, uma por linha?
5. Compilar dentro do Vim
Complete o comando do Vim que compila o arquivo aberto (%) gerando um executável com o nome sem extensão:
Missão final: o recuo que ajuda a ler
Missão: o programa abaixo funciona, mas foi escrito todo "colado" na margem, e fica difícil ver o que está dentro do main. Os editores de código fazem o recuo (os espaços no começo da linha) sozinhos. Arrume à mão: coloque 4 espaços antes de cada linha com std::cout. Depois rode: a saída não muda, mas o código fica muito mais fácil de ler.
#include <iostream>
int main() {
std::cout << "Lista de compras:\n";
std::cout << "- arroz\n";
std::cout << "- feijão\n";
std::cout << "- café\n";
}
#include <iostream>
int main() {
std::cout << "Lista de compras:\n";
std::cout << "- arroz\n";
std::cout << "- feijão\n";
std::cout << "- café\n";
}
Para o compilador, os espaços no começo da linha não fazem diferença nenhuma; para quem lê, fazem toda. A aula Sintaxe mostra as convenções de recuo, e o atalho Shift+Alt+F do VS Code faz isso automaticamente.
Resumo
- Editor de texto escreve; editor de código ajuda (cores, autocompletar, erros); IDE integra tudo. Nenhum deles é o compilador.
- VS Code (recomendado): extensão C/C++ (
ms-vscode.cpptools) ou clangd; configure o C++23 (C_Cpp.default.cppStandardoucompile_flags.txt). - Compile pelo terminal integrado ou com um
.vscode/tasks.jsone Ctrl+Shift+B, sempre com-std=c++23 -Wall -Wextra. - CLion (IDE completa, grátis para uso não comercial), Visual Studio (Windows), Code::Blocks (leve), Vim/Neovim (terminal).
- Arquivo com extensão
.cpp, em UTF-8, e salvo antes de compilar. - Diante de muitas mensagens de erro, leia a primeira.
- Próximo passo: conhecer a fundo as caixas Experimente, em O Editor do Guia.