Configurando o Visual Studio Code
Para compilar e executar programas em C no Visual Studio Code, devemos instalar algumas extensões. Recomendamos criar um perfil para o C e C++, o que manterá as configurações para essas linguagens separadas.
Perfil
Para criar um perfil no Visual Studio Code, clique no ícone de engrenagem no canto inferior esquerdo e selecione Profiles (ou perfis).
Clique no botão New Profile. Uma nova entrada surgirá na lista de perfis.
Dê um nome ao perfil, como C/C++
.
Escolha o ícone de sua preferências.
Agora, selecione o perfil ao clicar no ícone de check ao lado da entrada dele na lista de perfis.
Extensões
Tendo ativado o perfil C/C++
, instale as seguinte extensões no Visual Studio Code:
- Git Graph: visualiza o histórico de commits do Git;
- C/C++: fornece suporte para desenvolvimento em C e C++;
- clangd: fornece recursos de análise de código para o Clang;
- CodeLLDB: permite a depuração de programas em C e C++.
Se você estiver usando o WSL, certifique-se de clicar nos botões Install in WSL: Ubuntu para cada extensão da lista de instaladas que oferecer essa opção.
Configurações
Vamos adicionar algumas configurações padrão para o perfil C/C++
.
Abra a paleta de comandos do Visual Studio Code com Ctrl + Shift + P e pesquise por Preferences: Open User Settings (JSON)
, ou o equivalente em português.
Isso abrirá um arquivo chamado settings.json
, responsável por definir as configurações desse perfil.
Toda vez que você muda alguma opção no menu de configurações do Visual Studio Code, o que ele faz é adicionar ou modificar uma linha nesse arquivo por baixo dos panos.
Copie o conteúdo a seguir e cole no arquivo settings.json
aberto.
Perceba que, abrindo o arquivo settings.json
quando se usa o perfil C/C++
, você verá as configurações específicas para este perfil, e não as configurações gerais do Visual Studio Code.
É este mesmo o objetivo que temos.
A configuração definida no arquivo settings.json
faz o seguinte:
- O compilador Clang é definido como o compilador padrão;
- Ativamos o IntelliSense para o Clang;
- As versões do C e do C++ são definidas como C23 e C++23, respectivamente;
- Definimos o formatador padrão como a extensão
clangd
, e desativamos a formatação da extensãoC/C++
; - Entre outras definições úteis.
Salve o arquivo e feche o Visual Studio Code.
Snippets
Snippets são trechos de código que podem ser inseridos rapidamente no editor. Eles possuem um atalho que, ao ser digitado e pressionado Tab, expande o trecho para o código completo.
Estamos utilizando o clang-format
como formatador de texto e o clang-tidy
como linter.
Para configurá-los, basta criar um arquivo .clang-format
e um .clang-tidy
na raiz do projeto.
Entretanto, criar e configurar esses arquivos manualmente pode ser trabalhoso. Por isso, podemos utilizar um snippet para criar esses arquivos automaticamente.
Garanta que você tenha selecionado o perfil C/C++
.
Então abra a paleta de comandos do Visual Studio Code com Ctrl + Shift + P e pesquise por Snippets: Configure Snippets
.
Selecione a opção New Global Snippets file
.
Digite o nome global
e pressione Enter.
O arquivo de configuração de snippets para o perfil C/C++
será aberto.
Seu nome é global.code-snippets
.
Este é o conteúdo padrão dele:
Apague todo o conteúdo dele.
Em seguida, acesse o arquivo global.code-snippets
no repositório do livro.
Copie o conteúdo do arquivo remote e cole no arquivo local que foi aberto no Visual Studio Code.
Lembre-se de salvar após a edição.
Para usar os snippets, feche e abra o Visual Studio Code.
Então, abra o diretório separate_function
que criamos anteriormente.
Crie um arquivo chamado .clang-format
e outro chamado .clang-tidy
na raiz do projeto.
Em seguida, abra o arquivo .clang-format
, digite clang-format
e pressione Enter.
O arquivo .clang-format
será preenchido com as configurações definidas no snippet Clang Format configurations
.
Agora, faça o mesmo para o arquivo .clang-tidy
.
Projeto
Vamos criar um projeto para construir uma lista encadeada de nós.
No terminal, navegue para a pasta c_cpp_projects
que criamos anteriormente.
Crie um diretório chamado linked_nodes
e navegue para dentro dele.
Abra o Visual Studio Code no diretório atual.
Selecione o perfil C/C++
que criamos anteriormente.
Arquivos
Crie um arquivo chamado node.h
e cole o seguinte código nele.
Então, crie um arquivo chamado node.c
e cole o código a seguir.
Por fim, crie um arquivo chamado main.
e cole o código a seguir.
Você também pode acessar esse projeto no repositório do livro.
Para configurar a formatação e o linter, crie os arquivos .clang-format
e .clang-tidy
na raiz do projeto.
Então utilize os snippets clang-format
e clang-tidy
para preenchê-los.
Compilação
Você verá que o Visual Studio Code já reconhece o projeto e identifica as bibliotecas e funções utilizadas.
Vamos compilar o projeto pelo terminal integrado do Visual Studio Code. Abra o terminal integrado com Ctrl + ` e execute o comando abaixo.
Esse comando compila os arquivos main.c
e node.c
, incluindo o arquivo de cabeçalho node.h
, e gera o arquivo executável linked_nodes
. Para executar o programa, digite ./linked_nodes
e pressione Enter.
Agora, em vez de rodar o comando no terminal, vamos utilizar a interface gráfica do Visual Studio Code para compilar o projeto.
Crie uma pasta chamada .vscode
na raiz do projeto.
Ela é responsável por guardar configurações específicas do Visual Studio Code para o projeto.
Dentro dela, crie um arquivo chamado tasks.json
e copie para ele o conteúdo do arquivo tasks.json
do repositório do livro.
O que o arquivo faz é definir uma tarefa chamada Clang: build C project (all files in root)
para o Linux e outra para o Windows.
Essa tarefa compila o projeto com o Clang, incluindo todos os arquivos de cabeçalho e todos os arquivos de código definidos na raiz do projeto.
O executável gerado terá o nome da pasta aberta no Visual Studio Code.
Clique no arquivo main.c
no Visual Studio Code para focar a visualização nele.
Abra a paleta de comandos com Ctrl + Shift + P e pesquise por Tasks: Run Task
.
Você também pode executar esse comando com o atalho Ctrl + Shift + B.
Seleciona a tarefa Clang: build C project (all files in root)
de acordo com o seu sistema operacional.
O mesmo comando de compilação será executado, mas pelo Visual Studio Code. Ele exibirá o resultado da compilação no terminal integrado.
Para executar, podemos chamar o arquivo executável diretamente no terminal integrado.
Neste caso, digite ./linked_nodes
e pressione Enter.
Configurações
Felizmente, o Visual Studio Code permite que você salve as configurações de compilação em arquivos globais para serem utilizadas em outros projetos.
Ative o perfil C/C++
, para que as configurações sejam salvas apenas para esse perfil.
Dessa forma, eliminamos o risco de conflitos entre diferentes configurações de compilação e depuração.
Para salvar as tarefas de compilação, abra a paleta de comandos com Ctrl + Shift + P e pesquise por Tasks: Open User Tasks
.
Selecione a opção Others
.
Será aberto o arquivo padrão de tarefas do perfil C/C++
.
Copie o conteúdo do arquivo tasks.json
do repositório do livro e cole no arquivo tasks.json
aberto no Visual Studio Code.
Lembre-se de salvar.
Assim, a tarefa estará disponível para todos os projetos que utilizarem o perfil C/C++
.
Se você estiver desenvolvendo um projeto com outras pessoas que não fizeram a mesma configuração que você, então recomendo criar o arquivo tasks.json
na pasta .vscode
mesmo, para que elas possam compilar o projeto sem problemas.
Os arquivos modificados do perfil do Visual Studio Code ficarão como no repositório do livro.