Partilhar via


Editar e refatorar código C++ no Visual Studio

Visual Studio fornece várias ferramentas para ajudá-lo a escrever, editar e refatorar seu código.

IntelliSense

O IntelliSense é uma poderosa ferramenta de autocompletar código que sugere símbolos e trechos de código para você enquanto digita. O C++ IntelliSense no Visual Studio é executado em tempo real, analisando sua base de código à medida que você a atualiza e fornecendo recomendações. À medida que você digita mais caracteres, a lista de resultados recomendados diminui.

Captura de tela da lista suspensa de membros C mais mais mostrando os métodos disponíveis para cadeia de caracteres, como acrescentar, atribuir e assim por diante.

Alguns símbolos são omitidos automaticamente para ajudar a reduzir os resultados. Por exemplo, ao acessar os membros de um objeto de classe de fora da classe, você não poderá ver membros privados por padrão ou membros protegidos (se não estiver no contexto de uma classe filha). Você pode ajustar a filtragem usando os botões na parte inferior.

Depois de escolher o símbolo na lista suspensa, você pode preenchê-lo automaticamente com Tab, Enter ou um dos outros caracteres de confirmação (por padrão: { } [ ] ( ) . , : ; + - * / % & | ^ ! = ? @ # \). Para adicionar ou remover caracteres desta lista, procure por "IntelliSense" no Início Rápido (Ctrl + Q) e escolha a opção Editor > de Texto C/C++ > Avançado . A opção Caracteres de confirmação da lista de membros permite que você personalize a lista com as alterações desejadas.

A opção Modo de Filtro da Lista de Membros controla os tipos de sugestões de preenchimento automático do IntelliSense que você vê. Por padrão, ele é definido como Fuzzy. Em uma pesquisa difusa, se você tiver um símbolo chamado MyAwesomeClass, você pode digitar "MAC" e encontrar a classe em suas sugestões de preenchimento automático. O algoritmo difuso define um limite mínimo que os símbolos devem cumprir para aparecer na lista. A filtragem inteligente exibe todos os símbolos que contêm substrings que correspondem ao que você digitou. A filtragem de prefixos procura cadeias de caracteres que começam com o que você digitou.

Para obter mais informações sobre C++ IntelliSense, consulte Visual Studio C++ IntelliSense e Configurar um projeto C++ para IntelliSense.

IntelliCode [en]

O IntelliCode é um IntelliSense assistido por IA. Coloca o candidato mais provável no topo da sua lista de conclusão. As recomendações do IntelliCode são baseadas em milhares de projetos de código aberto no GitHub, cada um com mais de 100 estrelas. Quando combinada com o contexto do seu código, a lista de conclusão é adaptada para promover práticas comuns.

Ao escrever C++, o IntelliCode ajudará ao usar bibliotecas populares, como a Biblioteca Padrão C++. O contexto do seu código é usado para fornecer as recomendações mais úteis primeiro. No exemplo a seguir, a size função de membro é comumente usada com a sort função, portanto, ela aparece no topo da lista de resultados.

Captura de tela da lista suspensa C plus IntelliCode que mostra os membros da classe vetorial classificados por quais são mais comumente usados em seu código.

No Visual Studio 2022 e no Visual Studio 2019, o IntelliCode está disponível como um componente opcional na carga de trabalho C++ Desktop Development . Para certificar-se de que o IntelliCode está ativo para C++, vá para Opções de Ferramentas>>IntelliCode>Geral e defina o modelo base C++ como Ativado.

No Visual Studio 2017, o IntelliCode está disponível como uma extensão no Visual Studio Marketplace.

IntelliSense Preditivo (Experimental)

O IntelliSense preditivo é um recurso experimental que usa consciência contextual para limitar o número de resultados exibidos na lista suspensa do IntelliSense. O algoritmo aplica a correspondência de tipo para mostrar apenas os resultados que correspondem ao tipo esperado. No caso mais simples, se você digitar int x = e invocar a lista suspensa IntelliSense, verá apenas inteiros ou funções retornando inteiros. Esse recurso está desativado por padrão porque ainda está em desenvolvimento. Funciona melhor com símbolos globais; As funções de membro ainda não são suportadas. Você pode ativá-lo digitando "Preditivo" no Início Rápido ou indo para Ferramentas>Opções>Editor de Texto>C/C++>Experimental>Ativar IntelliSense Preditivo.

Para substituir o Predictive IntelliSense e mostrar a lista mais longa, pressione Ctrl + J. Se o IntelliSense Preditivo estiver ativado, invocar Ctrl + J removerá o filtro Preditivo. Pressionar Ctrl + J novamente remove o filtro de acessibilidade dos resultados da Lista de Membros, quando relevante. O botão ([+]) na lista suspensa IntelliSense faz a mesma coisa que Ctrl + J. Passe o cursor sobre o botão para ver as informações da dica de ferramenta sobre o que está sendo mostrado.

Screenshot de C plus plus Predictive IntelliSense.

A captura de tela anterior mostra vários botões na lista suspensa. Estes permitem filtros IntelliSense para diferentes tipos de resultados:

  • Variáveis e constantes
  • Funções
  • Tipos
  • Macros
  • Enums
  • Namespaces

Um botão só será exibido se for relevante para sua sessão atual do IntelliSense. Normalmente, você não vê todos os botões ao mesmo tempo.

Modelo IntelliSense

A barra de modelos é um elemento da interface do usuário que aparece quando o cursor está em uma definição de modelo. É útil porque você pode fornecer argumentos de modelo de exemplo para o intellisense que aparecerão quando você editar o corpo do modelo. Por exemplo, você pode especificar que um argumento de modelo é do tipo std::vector<int>. Então, quando você usar esse argumento no corpo do modelo, você verá os membros do std::vector<int>in intellisense.

Captura de ecrã da barra de modelos com a opção Adicionar Todas as Instanciações Existentes realçada.

Clique no <ícone T> para expandir/recolher a Barra de modelos. Clique no ícone de lápis ou clique duas vezes na Barra de modelos para abrir a janela Editar onde você especifica tipos de argumento para os parâmetros.

Captura de tela da experiência de edição dentro da barra de modelos onde você insere um tipo para cada parâmetro de modelo.

A Barra de modelos pode preencher automaticamente tipos de parâmetros com base em instanciações do modelo em seu código. Clique em Adicionar todas as instanciações existentes para ver uma lista de todos os argumentos concretos que foram usados para instanciar o modelo em toda a sua base de código.

Captura de tela dos Resultados do Modelo IntelliSense listando os diferentes tipos usados para instanciar o parâmetro C do modelo, como C = AmbientLight, C = Vela e outros.

Uma janela na parte inferior do editor mostra onde cada instanciação foi encontrada e quais eram seus argumentos. Você pode selecionar uma instanciação para ir para o local em seu código onde essa instanciação foi encontrada.

Captura de tela da lista de instanciações do modelo em seu código. A instantion, o arquivo, o local e os argumentos são listados.

As informações da Barra de Modelos são específicas do usuário. Ele é armazenado na pasta e não está comprometido com o .vs controle do código-fonte.

Erros e correções rápidas

Se o editor detetar problemas com seu código, ele adicionará rabiscos coloridos sob o problema. Rabiscos vermelhos indicam código que não será compilado. Os rabiscos verdes indicam outros tipos de problemas que ainda podem ser potencialmente graves. Você pode abrir a janela Lista de Erros para obter mais informações sobre os problemas.

Para alguns tipos de erros e padrões de codificação comuns, o editor oferecerá uma Correção Rápida na forma de uma lâmpada que aparece quando você passa o mouse sobre o rabisco. Clique na seta para baixo para ver as sugestões.

No exemplo a seguir, um vector foi declarado, mas nenhuma definição foi encontrada, então o editor se oferece para incluir o arquivo de cabeçalho necessário:

Captura de tela de um erro e a correção rápida proposta para # incluir vetor.

O editor também oferece correções rápidas para algumas oportunidades de refatoração. Por exemplo, se você declarar uma classe em um arquivo de cabeçalho, o Visual Studio oferecerá para criar uma definição para ela em um arquivo .cpp separado.

Captura de tela mostrando a correção rápida com a opção Criar definição de Iterador de Rota de Canal em canais ponto C P P realçada.

Acompanhamento de alterações

Sempre que você faz uma alteração em um arquivo, uma barra amarela aparece à esquerda para indicar que as alterações não salvas foram feitas. Quando você salva o arquivo, a barra fica verde. As barras verde e amarela são preservadas desde que o documento esteja aberto no editor. Eles representam as alterações feitas desde a última vez que você abriu o documento.

Captura de tela de C plus plus change tracking. Uma barra amarela à esquerda parece indicar alterações.

Mover código

Você pode mover linhas de código para cima e para baixo selecionando-as, mantendo pressionada a tecla Alt e pressionando as teclas de seta para cima/baixo .

Inserir trechos

Um trecho é uma parte predefinida do código-fonte. Clique com o botão direito do mouse em um único ponto ou no texto selecionado e selecione Trecho para inserir um trecho ou cercar o texto selecionado com o trecho. A ilustração a seguir mostra as três etapas para cercar uma instrução selecionada com um loop for. Os destaques amarelos na imagem final são campos editáveis que você acessa com a tecla tab. Para obter mais informações, consulte trechos de código.

Captura de tela do controle suspenso Inserir trecho.

Uma função é selecionada. Na lista suspensa que aparece após um clique com o botão direito do mouse no nome da função, Surround With... é realçado a amarelo. No menu suspenso Surround with:, o trecho de um loop 'for' é selecionado. Isso resulta em colocar um loop for em torno da função. A variável de loop e o limite são mostrados em amarelo para indicar que são campos editáveis.

Adicionar classe

Adicione uma nova classe no menu Project ou no menu de contexto no Solution Explorer:

Captura de ecrã da caixa de diálogo Adicionar Nova Classe. Ele tem campos para o nome da classe, acessibilidade, arquivos para colocar a declaração e implementação, e assim por diante.

Você também pode usar o Assistente de classe para modificar ou examinar uma classe existente.

Captura de tela do Assistente de classe que tem opções para adicionar métodos, variáveis de membro e muito mais.

Para obter mais informações, consulte Adicionando funcionalidade com assistentes de código (C++).

Refatorização

As refatorações estão disponíveis no menu de contexto Ação rápida ou clicando em uma lâmpada no editor. Alguns também são encontrados no menu Editar > Refator . Estas funcionalidades incluem:

Aplicação de estilo de código com ClangFormat e EditorConfig

O Visual Studio 2017 e posterior vem com suporte interno para ClangFormat, um utilitário popular de formatação de código para C++ baseado em Clang/LLVM. Digite "ClangFormat" no Início Rápido para configurá-lo para usar um destes formatos comuns:

  • LLVM
  • Google
  • Crómio
  • Mozilla
  • WebKit
  • Visual Studio

Você também pode fornecer seu próprio .clang-format arquivo ou _clang-format para aplicar regras personalizadas a todos os arquivos de código no mesmo nível ou abaixo.

Os arquivos são facilmente compartilháveis via controle do código-fonte, para que você possa impor convenções de codificação em toda a sua equipe de desenvolvimento.

Captura de tela mostrando um arquivo no formato .clang que tem muitas opções, como o limite de coluna, largura de recuo, largura de tabulação e assim por diante.

O Visual Studio 2017 e posterior também oferece suporte ao EditorConfig, que funciona de maneira semelhante. ClangFormat, no entanto, tem mais opções de estilo do que EditorConfig, incluindo regras que são específicas para C++. Com EditorConfig, você cria arquivos .editorconfig e os coloca em diferentes pastas de sua base de código para especificar estilos de código para essas pastas e suas subpastas. Um arquivo .editorconfig substitui quaisquer outros arquivos .editorconfig nas pastas pai e substitui todas as configurações de formatação configuradas por meio dasOpções de >. Você pode definir regras para guias versus espaços, tamanho de recuo e muito mais. Para obter mais informações, consulte Criar configurações de editor portáteis e personalizadas com EditorConfig.

Outras opções de formatação

A caixa de pesquisa Início Rápido fornece a maneira mais rápida de encontrar uma configuração ou ferramenta. Ele está localizado no menu principal. Basta começar a digitar e a lista de preenchimento automático filtrará os resultados.

Captura de ecrã da caixa de pesquisa Início Rápido. Ele mostra a pesquisa C plus plus avançado, o que resulta em opções para o editor de texto.

Para definir opções de formatação, como recuos, conclusão da chave e colorização, digite "Formatação C++" na janela Início Rápido .

Captura de ecrã a mostrar opções de formatação C++, tais como recuar automaticamente quando escreve um separador.

Outras opções de formatação encontram-se em Editar>Avançado no menu principal.

Captura de tela mostrando opções avançadas de edição, como visualização de espaço em branco, quebra automática de linha, comentário de uma seleção, aumento do recuo de linha e muito mais.

As opções para habilitar e configurar recursos de edição específicos do C++ estão localizadas em Opções de Ferramentas>> Editor >C/C++. Depois de escolher qual opção deseja definir, você pode obter mais ajuda pressionando F1 quando a caixa de diálogo estiver em foco. Para opções gerais de formatação de código, digite Editor C++ Início Rápido.

Captura de tela mostrando o item de menu Ferramentas do Visual Studio selecionado e o item de menu Opções realçado.

Recursos experimentais, que podem ou não ser incluídos em uma versão futura do Visual Studio, são encontrados na caixa de diálogo Experimental C++ do Editor de Texto . No Visual Studio 2017 e posterior, você pode habilitar o Predictive IntelliSense nesta caixa de diálogo.

Ver também

Leia e compreenda o código
C++Navegar na base de código C++ no Visual Studio
Colabore com o Live Share para C++