C Editores e IDEs
Código C é texto puro: dá para escrevê-lo até 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, marca o erro enquanto você digita, completa nomes e compila com uma tecla. Nesta aula você vai conhecer os editores e IDEs mais usados para C, configurar o VS Code para o C23, compilar por dentro dele e aprender os cuidados com o arquivo que evitam muita dor de cabeça.
- A diferença entre editor de texto, editor de código e IDE, e por que nenhum deles é o compilador.
- Configurar o VS Code: as extensões C/C++ (da Microsoft) e clangd, e o padrão C23.
- 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: a extensão
.c, o 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 fictícia da Ana, com o gcc 15.2, na pasta ~/c.
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, números das linhas, completar nomes, marcar erros; com extensões, compila e depura. | VS Code, Vim, Neovim, Geany, Sublime Text |
| 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 ligados entre si. | CLion, Visual Studio, Code::Blocks |
O editor só ajuda a escrever. Quem transforma o código em programa continua sendo o gcc, o clang ou o cl da Microsoft, que você instalou na aula Instalar no Linux ou Instalar no Windows e macOS. Se o compilador não estiver instalado, o mais bonito dos editores não consegue gerar programa nenhum. A exceção são algumas IDEs (Visual Studio, Code::Blocks e CLion no Windows) que já trazem um compilador junto.
1. Por que um editor de código ajuda tanto
Veja um engano que todo iniciante comete: esquecer de fechar as aspas. A Ana escreveu "Olá, mundo!\n e o " do fim sumiu:
#include <stdio.h>
int main(void) {
printf("Olá, mundo!\n);
printf("Tchau!\n");
return 0;
}
Num editor de código, o problema salta aos olhos antes mesmo de compilar: o texto entre aspas tem uma cor própria, e essa 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 com uma ondinha vermelha. Sem essa ajuda, a Ana só descobre ao compilar, e o gcc responde com uma avalanche:
$ gcc -std=c23 -Wall -Wextra aspas.c -o aspas 2>&1 | wc -l
32 « 32 linhas de mensagens!
$ gcc -std=c23 -Wall -Wextra aspas.c -o aspas 2>&1 | head -6
aspas.c: In function ‘main’:
aspas.c:4:12: warning: missing terminating " character
4 | printf("Olá, mundo!\n);
| ^
aspas.c:4:12: error: missing terminating " character « a primeira mensagem diz tudo
4 | printf("Olá, mundo!\n);
- 2>&1
- As mensagens do compilador saem por um "canal" separado da saída normal (o
stderr, aula stdin, stdout e stderr). O2>&1junta os dois canais, para o próximo comando receber tudo. - | wc -l
- O
|(barra vertical, o "cano") entrega a saída para outro comando. Owc -lconta as linhas: 32. - | head -6
- Mostra só as seis primeiras linhas.
A primeira mensagem já diz o problema: missing terminating " character, "falta o caractere " de fechamento", na linha 4, coluna 12. As outras linhas são consequência: sem as aspas fechadas, o gcc se perdeu e tentou entender o resto de todo jeito, reclamando de coisas que estão certas. Regra de ouro, que a aula Lendo Erros do Compilador detalha: leia e conserte a primeira mensagem, e compile de novo.
O editor do guia também pinta o código. Repare nas cores da linha 4 e no que o compilador dele, o Clang, responde: missing terminating '"' character e expected expression ("esperava uma expressão"):
Missão: rode e leia o erro. Depois feche as aspas no lugar certo (depois do \n, antes do )) e rode de novo: devem aparecer as duas linhas.
#include <stdio.h>
int main(void) {
printf("Olá, mundo!\n);
printf("Tchau!\n");
return 0;
}
#include <stdio.h>
int main(void) {
printf("Olá, mundo!\n");
printf("Tchau!\n");
return 0;
}
Além das cores, um editor de código:
- numera as linhas, os mesmos números que as mensagens do compilador citam (
aspas.c:4:12é a linha 4, coluna 12); - faz o recuo sozinho: depois de um
{, a próxima linha já começa mais para dentro; - fecha os pares: digitou
(, ele põe o); digitou", ele põe o outro"; - completa nomes: digite
prie ele sugereprintf; - marca erros e avisos enquanto você digita, antes de compilar.
2. 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 (seção 3).
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. - Instale como qualquer programa. No Ubuntu, dê dois cliques no
.debou rodesudo apt install ./code_*.debna pasta do download. - Abra a pasta dos seus programas: no terminal,
code ~/c; 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 guardadas na pasta. - Crie um arquivo com Arquivo → Novo Arquivo e salve com um nome terminado em
.c, comoola.c. Na hora, o VS Code reconhece a linguagem (o canto de baixo da janela passa a dizer C) e oferece instalar a extensão de C.
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. Apesar do nome "C/C++" e do "clang" no nome da outra, as duas servem para C:
| 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 | Completar e marcar erros usando o próprio Clang: os erros sublinhados são 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 C23 | Configuração C_Cpp.default.cStandard = c23 | 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 precisos e rápidos (são os mesmos do editor do guia, que também é Clang) |
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 C23
Os dois "corretores" precisam saber que você usa o C23. Senão, analisam o código como se fosse de uma versão antiga e sublinham em vermelho coisas novas, como bool sem #include ou nullptr, mesmo o programa compilando (veja "Quando dá errado").
- Na extensão C/C++: abra as configurações (Ctrl+,), procure C Standard e escolha
c23no item C_Cpp › Default: C Standard. (O item vizinho, Cpp Standard, é para C++: não precisa mexer.) - No clangd: crie na pasta do projeto um arquivo chamado
compile_flags.txtcom as opções de compilação, uma por linha:
-std=c23 -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 (aula Compilar com gcc). 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 (ou Ctrl+'). 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, iguais aos das aulas:
$ gcc -std=c23 -Wall -Wextra ola.c -o ola $ ./ola Olá, mundo!
Quando há erro, segure Ctrl e clique no aspas.c:4:12 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 C23",
"type": "shell",
"command": "gcc",
"args": [
"-std=c23", "-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": "gcc" | O programa. Troque por clang 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 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.c, o executável vira ola, na mesma pasta. |
"problemMatcher": ["$gcc"] | Ensina o VS Code a ler as mensagens do gcc: 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.c 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):
$ gcc -std=c23 -Wall -Wextra -g /home/ana/c/ola.c -o /home/ana/c/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=c23 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. Para C, o comando dela é gcc ola.c -o ola: sem -std=c23 e, pior, sem avisos. Veja a diferença com um programa que tem uma variável esquecida:
$ gcc idade.c -o idade && ./idade « o comando do Code Runner
Olá, Ana! « nenhum aviso
$ gcc -std=c23 -Wall -Wextra idade.c -o idade « o comando do guia
idade.c: In function ‘main’:
idade.c:4:9: warning: unused variable ‘idade’ [-Wunused-variable]
4 | int idade = 29;
| ^~~~~
Os avisos que o guia ensina a ler (aula Avisos) nunca aparecem. Prefira o terminal ou o tasks.json, em que você vê e controla o comando.
3. 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 C Executable e o padrão C23, e ele grava set(CMAKE_C_STANDARD 23) no arquivo CMakeLists.txt (aula CMake). Tem análise de código muito boa (baseada no clangd), refatoração (renomear uma variável em todo o projeto de uma vez) e depurador visual. No Windows, já vem com um compilador (MinGW). É a melhor escolha para quem quer uma IDE completa sem ficar preso ao Windows. Lembre-se de que o CMake não liga o -Wall -Wextra sozinho: a aula de CMake mostra como.
Visual Studio
O Visual Studio (a edição Community é gratuita) é a IDE da Microsoft, só para Windows. Vem com o compilador MSVC e um ótimo depurador visual. Mas o MSVC foi feito pensando em C++: o C23 ainda está chegando a ele aos poucos, e as mensagens de erro são bem diferentes das do gcc mostradas no guia. A instalação, e como criar um arquivo .c nele, estão em Instalar no Windows e macOS. Para seguir este guia, prefira o VS Code com o gcc.
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 gcc. No Linux: sudo apt install codeblocks.
- Crie um projeto com File → New → Project → Console application e escolha C (não C++) quando ele perguntar a linguagem.
- Em Settings → Compiler → Compiler settings, na aba Other compiler options, escreva
-std=c23 -Wall -Wextra. - Compile e rode com F9.
Se o gcc que veio junto for antigo (até a versão 13), ele não conhece -std=c23: use -std=c2x, o nome antigo do C23 (aula Versões do C). A interface é mais antiga e o autocompletar é mais fraco, mas roda bem em computadores modestos. O Dev-C++, que muitas escolas ainda usam, é parecido, mas traz um gcc bem mais antigo, que não conhece boa parte do C23.
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 :!gcc -std=c23 -Wall -Wextra % -o %:r :!./%:r
- :w
- Salva o arquivo (write). Sem isso, o
gcccompila 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.c. - %:r
- O nome sem a extensão (root, "raiz"):
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 só para Windows e já usa o compilador da Microsoft | Visual Studio |
| tem um computador modesto ou a escola pede | Code::Blocks (ou Geany, no Linux) |
| 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.c escrito no Vim compila igual a um escrito no CLion.
4. Os cuidados com o arquivo
A extensão .c
Salve com a extensão .c. É ela que faz o editor ligar as cores e as ferramentas de C, e que faz o gcc tratar o arquivo como código C. Dois enganos comuns:
1. O Bloco de Notas do Windows acrescenta .txt e o arquivo vira ola.c.txt. O gcc não reconhece a extensão e entrega o arquivo para o ligador, que não entende nada:
$ gcc -std=c23 -Wall -Wextra ola.c.txt -o ola /usr/bin/x86_64-linux-gnu-ld.bfd:ola.c.txt: file format not recognized; treating as linker script /usr/bin/x86_64-linux-gnu-ld.bfd:ola.c.txt:3: syntax error collect2: error: ld returned 1 exit status
"Formato de arquivo não reconhecido; tratando como script do ligador", e logo depois "erro de sintaxe" na linha 3. No Windows, ative Exibir → Extensões de nomes de arquivos no Explorador de Arquivos para ver o nome completo, e renomeie para ola.c.
2. Salvar como .cpp (a extensão do C++). O gcc passa a compilar o arquivo como C++, uma linguagem parecida, mas diferente. Este programa é C correto (new é um nome qualquer em C), e falha como .cpp, porque em C++ new é uma palavra reservada:
$ gcc -std=c23 -Wall -Wextra turma.c -o turma && ./turma
A turma tem 30 alunos.
$ cp turma.c turma.cpp
$ gcc -std=c23 -Wall -Wextra turma.cpp -o turma
cc1plus: warning: command-line option ‘-std=c23’ is valid for C/ObjC but not for C++
turma.cpp: In function ‘int main()’:
turma.cpp:4:9: error: expected unqualified-id before ‘new’
4 | int new = 30;
| ^~~
turma.cpp:5:43: error: expected type-specifier before ‘)’ token
5 | printf("A turma tem %d alunos.\n", new);
| ^
A primeira linha entrega o que aconteceu: cc1plus é o compilador de C++ do gcc, e ele avisa que "-std=c23 vale para C, mas não para C++". Se aparecer cc1plus ou int main() numa mensagem sua, confira a extensão do arquivo.
Codificação: UTF-8
Os acentos do guia ("Olá", "feijão") 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; no VS Code, a codificação aparece na barra de status, no canto de baixo. 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 gcc 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. (O editor do guia não tem esse problema: o Rodar sempre compila o que está na caixa.)
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 <stdio.h>, 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 gcc --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 gcc.
bool ou o nullptr 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. É como se ele compilasse com -std=c17, em que bool, true e nullptr ainda não eram palavras da linguagem:
$ gcc -std=c23 -Wall -Wextra nulo.c -o nulo && ./nulo
Tudo certo.
$ gcc -std=c17 -Wall -Wextra nulo.c -o nulo
nulo.c: In function ‘main’:
nulo.c:4:5: error: unknown type name ‘bool’
4 | bool pronto = true;
| ^~~~
nulo.c:2:1: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
1 | #include <stdio.h>
+++ |+#include <stdbool.h>
2 |
nulo.c:4:19: error: ‘true’ undeclared (first use in this function)
4 | bool pronto = true;
| ^~~~
nulo.c:4:19: note: ‘true’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
nulo.c:4:19: note: each undeclared identifier is reported only once for each function it appears in
nulo.c:5:14: error: ‘nullptr’ undeclared (first use in this function)
5 | int *p = nullptr;
| ^~~~~~~
Quem manda é o compilador: se compilou com -std=c23, o código está certo.
Como consertar: configure o C23 no editor: C_Cpp.default.cStandard = c23 na extensão C/C++, ou o compile_flags.txt com -std=c23 no clangd.
tasks.json aberto
$ gcc -std=c23 -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 gcc compilar o próprio tasks.json. Como .json não é extensão de código, o gcc o entregou ao ligador, que disse: "formato de arquivo não reconhecido" e, em seguida, "erro de sintaxe" na linha 1. É o mesmo erro do ola.c.txt.
Como consertar: clique na aba do .c antes de teclar o atalho.
cc1plus ou In function ‘int main()’ na mensagem
O que significa: o arquivo está sendo compilado como C++: a extensão é .cpp (ou .cc, .cxx), ou o projeto da IDE foi criado como C++ (seção 4).
Como consertar: renomeie o arquivo para .c. No Code::Blocks e no CLion, crie o projeto escolhendo a linguagem C.
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 Compilar com gcc).
Como consertar: salvar (Ctrl+S), compilar, rodar, sempre nessa ordem. No terminal, gcc … && ./programa compila e roda de uma vez.
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+' | Ctrl+' | Abrir ou fechar o terminal integrado |
| 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. O gcc mostrou 32 linhas de mensagens depois que a Ana esqueceu de fechar umas aspas. O que ela deve fazer?
4. A mensagem de erro da Ana começa com cc1plus: warning: command-line option ‘-std=c23’ is valid for C/ObjC but not for C++. Qual é o problema mais provável?
5. O arquivo do clangd
Qual é o nome do arquivo em que o clangd lê as opções de compilação, uma por linha?
6. Compilar dentro do Vim
Complete o comando do Vim que compila o arquivo aberto (%) gerando um executável com o nome sem extensão:
7. O C23 na extensão C/C++
Complete a configuração do VS Code que faz a extensão C/C++ analisar o código como C23:
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 printf e do return 0; (no editor do guia, a tecla Tab insere os 4 espaços; com as linhas selecionadas, recua todas de uma vez). Depois rode: a saída não muda, mas o código fica muito mais fácil de ler.
#include <stdio.h>
int main(void) {
printf("Lista de compras:\n");
printf("- arroz\n");
printf("- feijão\n");
printf("- café\n");
return 0;
}
#include <stdio.h>
int main(void) {
printf("Lista de compras:\n");
printf("- arroz\n");
printf("- feijão\n");
printf("- café\n");
return 0;
}
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, recuo, autocompletar, erros marcados); IDE integra tudo. Nenhum deles é o compilador.
- VS Code (recomendado): extensão C/C++ (
ms-vscode.cpptools) ou clangd; configure o C23 (C_Cpp.default.cStandard=c23oucompile_flags.txtcom-std=c23). - Compile pelo terminal integrado ou com um
.vscode/tasks.jsone Ctrl+Shift+B, sempre com-std=c23 -Wall -Wextra. Fuja de botões que compilam sem avisos. - CLion (IDE completa, grátis para uso não comercial), Visual Studio (Windows, C23 incompleto), Code::Blocks (leve, use
-std=c2xse o gcc for antigo), Vim/Neovim (terminal). - Arquivo com extensão
.c(não.c.txt, nem.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.