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.

Você vai aprender
  • 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

TipoComparaçãoO que fazExemplos
Editor de textoUma caneta e uma folhaSó escreve e salva texto.Bloco de Notas, gedit, nano
Editor de códigoUm caderno com régua, marca-texto e corretorCores 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 completoTudo 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)
Identificadorms-vscode.cpptoolsllvm-vs-code-extensions.vscode-clangd
O que fazIntelliSense (completar, marcar erros, ir para a definição) e depuração com o GDB, o LLDB ou o depurador da MicrosoftCompletar 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++23Configuração C_Cpp.default.cppStandard = c++23Um arquivo compile_flags.txt na pasta (veja abaixo)
Bom paraComeçar: funciona sem configurar quase nada, e traz o depuradorQuem 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 }
    }
  ]
}
LinhaO 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.

Cuidado com extensões que "rodam qualquer coisa"

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 guiaVS Code + extensão C/C++ (ou clangd) + terminal integrado
quer uma IDE completa, em qualquer sistemaCLion
programa para Windows, jogos com Unreal ou usa o compilador da MicrosoftVisual Studio
tem um computador modesto ou a escola pedeCode::Blocks
vive no terminal ou edita em servidoresVim/Neovim (ou nano, para o básico)
ainda não instalou nadaAs 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

VS Code: #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++.

O editor sublinha o 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.

Teclei Ctrl+Shift+B com o 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.

"Mudei o código e o programa continua igual"

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 macOSO que faz
Ctrl+SCmd+SSalvar
Ctrl+Shift+BCmd+Shift+BRodar a tarefa de compilação padrão
Ctrl+Shift+PCmd+Shift+PPaleta de comandos: procurar qualquer comando pelo nome
Ctrl+Shift+XCmd+Shift+XExtensões
Ctrl+,Cmd+,Configurações
Ctrl+EspaçoCtrl+EspaçoSugestões de autocompletar
F12F12Ir para a definição do nome sob o cursor
Ctrl+/Cmd+/Comentar ou descomentar a linha (aula Comentários)
Shift+Alt+FShift+Option+FFormatar o documento (arrumar os espaços e o recuo)
F5F5Iniciar 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:

:!g++ -std=c++23 -Wall -Wextra % -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.cppStandard ou compile_flags.txt).
  • Compile pelo terminal integrado ou com um .vscode/tasks.json e 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.