Configurar C/C++ Incluir Limpeza no Visual Studio

A partir da versão 17.8 Preview 1, o Visual Studio pode limpar os ficheiros que #include para melhorar a qualidade do seu código C e C++ das seguintes formas:

  • Oferece adicionar ficheiros de cabeçalho para código que compila apenas porque um ficheiro de cabeçalho necessário é incluído indiretamente por outro ficheiro de cabeçalho.
  • Oferece a remoção de ficheiros de cabeçalho não utilizados — melhorando os tempos de construção.

Este artigo descreve como configurar a Limpeza de Inclusões no Visual Studio. Para mais informações sobre Incluir Limpeza, consulte Visão Geral Incluir Limpeza em C/C++.

Ativar Inclusão de Limpeza

A funcionalidade de Limpeza de inclusões está desativada por predefinição.

Ativa-o selecionando Ferramentas>Opções>Editor de Texto>C/C++>Code Cleanup e selecionando Ativar #include limpeza.

Depois, utilize os menus pendentes para configurar o nível de gravidade das notificações relativas à possibilidade de adicionar cabeçalhos indiretos ou remover cabeçalhos não utilizados:

>

A caixa de verificação **Ativar limpeza de #include** está selecionada. As listas pendentes para **Remover nível de sugestão de inclusões não utilizadas** e **Adicionar nível de sugestão de inclusões em falta** são apresentadas. Os conteúdos do menu suspenso são mostrados: **Só refatoração**, **Sugestão**, **Aviso** e **Erro**. O menu suspenso **Remover níveis de sugestão inclui não utilizados** oferece as mesmas opções mas também adiciona **Dimmed**.

Estas opções controlam o tipo de notificação que a funcionalidade Incluir Limpeza fornece sobre cabeçalhos não utilizados:

Atenuado

O Include Cleanup mostra os ficheiros de cabeçalho não utilizados, atenuando a linha do ficheiro de cabeçalho não utilizado no editor de código e apresentando uma mensagem na janela Lista de Erros. No editor de código, passe o cursor sobre o #include esbatido para abrir o menu de ações rápidas e escolha Mostrar possíveis correções ou clique no menu pendente do ícone da lâmpada, para ver ações relacionadas com o ficheiro não utilizado.

Uma captura de ecrã de uma linha #include < iostream > atenuada.

A linha para #include < iostream > está atenuada porque a linha de código que usa iostream é comentada. Essa linha de código é // std::cout << "charSize = " << charSize; O menu de ação rápida também é visível para esta linha. Diz que o > #include < iostream não é usado neste ficheiro e tem um link para Mostrar possíveis correções.

Apenas refatoração: Incluir Limpeza oferece ações que podes realizar através do menu de ações rápidas no editor de código ao passar o rato sobre um #include, ou colocar o cursor na #include linha e carregar em Ctrl+período:

Uma captura de ecrã da ação rápida para remover um cabeçalho não utilizado.

Ao passar o cursor sobre # incluir iostream, aparece uma lâmpada com o texto que # incluir iostream não é usado neste ficheiro."

Sugestão, Aviso, Erro: Incluir Limpeza pode mostrar mensagens Incluir Limpeza como sugestões, avisos ou erros na janela da Lista de Erros . Tu decides qual. Na captura de ecrã seguinte da Lista de Erros, o Include Cleanup está configurado para mostrar os ficheiros de cabeçalho não utilizados com um aviso. Certifique-se de que Build + Intellisense está selecionado no filtro suspenso para que possa ver a saída Incluir Limpeza:

Uma captura de tela da janela Lista de Erros.

O filtro de lista pendente está definido para **Build + IntelliSense**. É visível um aviso: VCIC002 - '#include ' não é usado neste ficheiro."

Ativa-o selecionando Ferramentas>Opções>Todas as Definições>Linguagens>C/C++>Code limpeza>Incluir limpeza. Utilize os menus pendentes para configurar como pretende ser notificado sobre oportunidades para assinalar diretivas #include não utilizadas, diretivas #include que podem ser otimizadas (removidas depois de as inclusões transitivas necessárias serem adicionadas diretamente) e diretivas #include em falta que são incluídas transitivamente.

Uma captura de ecrã da caixa de diálogo Opções de Ferramentas aberta em Todas as Definições > Linguagens > C/C++ > Limpeza de código > Limpeza de inclusões.

Captura de ecrã que mostra as listas pendentes para escolher como destacar, no editor de código, um cabeçalho não utilizado, um que possa ser otimizado e um que esteja incluído transitivamente.

O significado das opções:

Atenuado

O Include Cleanup mostra os ficheiros de cabeçalho não utilizados, esbatendo a linha do ficheiro de cabeçalho não utilizado no editor de código e apresentando também uma mensagem na janela Error List. No editor de código, passe o cursor sobre o elemento #include esbatido para abrir o menu de ações rápidas e escolha Mostrar possíveis correções, ou clique no menu pendente da lâmpada para ver as ações relacionadas com o ficheiro não utilizado.

Uma captura de ecrã de uma linha #include < iostream > atenuada.

A linha para '#include ' é atenuada porque a linha de código que usa 'iostream' é comentada. Essa linha de código é '// std::cout << "charSize = " << charSize;'. O menu de ação rápida também é visível para esta linha. Diz que o '#include ' não é usado neste ficheiro e tem um link para **Mostrar possíveis correções**.

Nenhuma: Não efetue nenhuma ação. A Limpeza de inclusões continua a disponibilizar ações que pode executar no editor de código no menu de ações rápidas quando passa o ponteiro do rato sobre um #include, ou coloca o cursor na linha #include e prime Ctrl+.:

Sugestão, Aviso, Erro: Incluir Limpeza pode mostrar mensagens Incluir Limpeza como sugestões, avisos ou erros na janela da Lista de Erros. Tu decides qual. Na captura de ecrã seguinte da Lista de Erros, a Limpeza de inclusões está configurada para assinalar os cabeçalhos não utilizados com um aviso. Certifique-se de que Build + Intellisense está selecionado no filtro suspenso para que possa ver a saída Incluir Limpeza:

Uma captura de tela da janela Lista de Erros.

O filtro da lista pendente está definido para **Build + IntelliSense**. É visível um aviso: VCIC002 - '#include ' não é usado neste ficheiro."

Outras opções de configuração

Mais definições de Limpeza de Inclusões estão disponíveis em Ferramentas>Opções>Editor de Texto>C/C++>Limpeza de Código:

  • Ordenação de inclusões: Sinaliza as diretivas #include que precisam de ser ordenadas. Escolha o nível de notificação de gravidade da mensagem que aparece na janela da Lista de Erros : Nenhum (a funcionalidade está desligada), Sugestão, Aviso ou Erro.
  • Estilo: Controla como #include as instruções são ordenadas. Escolha Ignorar para ordenar sem considerar o estilo de parênteses, Aspas para ordenar as inclusões entre aspas acima das inclusões entre parênteses angulares, ou Parênteses angulares para ordenar as inclusões entre parênteses angulares acima das inclusões entre aspas.
  • Sensível a maiúsculas e minúsculas: Quando selecionado, a ordenação compara e inclui nomes de ficheiros de forma sensível a maiúsculas minúsculas. Quando desmarcada, a ordenação não distingue maiúsculas de minúsculas.

Captura de ecrã das opções do Visual Studio com as definições Advanced filtering, Sort after edits, Sort Includes, Sorting priority, Style e Case sensitive realçadas.

Mais definições de Limpeza de inclusões estão disponíveis em Ferramentas>Opções>Todas as definições>Linguagens>C/C++>Limpeza de código>Limpeza de inclusões:

  • Filtragem Avançada: Quando selecionada, se chamar uma função membro num objeto de classe derivada mas a função estiver definida na classe base, a ferramenta não sugere adicionar o cabeçalho da classe base. Ativa esta opção para reduzir sugestões ruidosas quando os símbolos que usas vêm de classes base em vez do tipo que referencias diretamente.
  • Ordenar as diretivas #include depois de efetuar quaisquer edições na limpeza de inclusões: Quando selecionada, a funcionalidade incorporada de ordenação de diretivas include é executada após qualquer ação de Limpeza de inclusões.
  • Formatar as diretivas #include após efetuar quaisquer edições para limpeza de inclusões: Quando selecionado, o comando de formatação é executado após qualquer ação de limpeza de inclusões.

Captura de ecrã do Visual Studio Inclua opções de limpeza com filtragem avançada, Ordenação e definições de Formato destacadas.

Configurar Incluir a Limpeza com .editorconfig

A funcionalidade de limpeza de inclusões tem mais opções, como excluir inclusões específicas das sugestões de limpeza e indicar que alguns ficheiros de cabeçalho são necessários, para que a ferramenta não os assinale como não utilizados. Defina estas opções num .editorconfig ficheiro. Adiciona este ficheiro ao teu projeto para impor estilos de programação consistentes para todos os que trabalham na base de código. Para mais informações sobre como adicionar um .editorconfig ficheiro ao seu projeto, consulte Criar definições de editor portátil e personalizadas com o EditorConfig.

As .editorconfig definições que pode usar com Incluir Limpeza são:

Configuração Valores Example
cpp_include_cleanup_add_missing_error_tag_type

Define o nível de erro para adicionar mensagens de inclusão transitiva.
none
suggestion
warning
error
cpp_include_cleanup_add_missing_error_tag_type = suggestion
cpp_include_cleanup_alternate_files

Suprimir mensagens para inclusão indireta. Por exemplo, se #include <windows.h> e apenas utilizar conteúdo dos cabeçalhos incluídos indiretamente winerror.h ou minwindef.h, a ferramenta não sugere adicioná-los.
ficheiro1:ficheiro2[:ficheiro3...][,ficheiro4:ficheiro5...] cpp_include_cleanup_alternate_files = windows.h:winerror.h:minwindef.h
ou
cpp_include_cleanup_alternate_files = windows.h:winerror.h:minwindef.h,umbrella.h:internal.h
cpp_include_cleanup_excluded_files

Exclui os ficheiros especificados das mensagens Incluir Limpeza. Não receberá nenhuma sugestão de cabeçalho, seja para o adicionar ou que não está a ser utilizado.
filename cpp_include_cleanup_excluded_files = vcruntime.h, vcruntime_string.h
cpp_include_cleanup_remove_unused_error_tag_type

Define o nível de erro para remover mensagens de inclusão não utilizadas.
none
suggestion
warning
error
dimmed
cpp_include_cleanup_remove_unused_error_tag_type = dimmed
cpp_include_cleanup_replacement_files

Substitui o ficheiro1 pelo ficheiro2 durante o processamento de Inclusão de Limpeza. Por exemplo, pode preferir usar cstdio em vez de stdio.h. Se tiver um ficheiro com ambos #include <cstdio> e #include <stdio.h> e utilizar conteúdo apenas de stdio.h, a opção Incluir Limpeza dir-lhe-á para remover stdio.h porque substituiu o uso de cstdio por stdio.h durante o processamento. Se não usar o conteúdo de nenhum dos dois, o Include Cleanup irá dizer-lhe para remover ambos.
ficheiro1:ficheiro2 cpp_include_cleanup_replacement_files = stdio.h:cstdio,stdint.h:cstdint
cpp_include_cleanup_required_files

Especifique que o uso do ficheiro1 requer o ficheiro2. Por exemplo, especifique que, se usar atlwin.h, altbase.h também deve ser incluído.
ficheiro1:ficheiro2 cpp_include_cleanup_required_files = atlwin.h:altbase.h, atlcom.h:altbase.h
cpp_sort_includes_error_tag_type

Define o nível de erro de sort-includes messages. none Desliga a funcionalidade. suggestion Mostra um ... rabisco e adiciona uma mensagem à lista de erros. warning Mostra um rabisco verde e adiciona um aviso. error Mostra um rabisco vermelho e adiciona um erro.
none
suggestion
warning
error
cpp_sort_includes_error_tag_type = suggestion
cpp_sort_includes_priority_case_sensitive

Quando true, a ordenação compara os nomes dos ficheiros de forma sensível a maiúsculas e minúsculas. Quando false, a ordenação não faz distinção entre maiúsculas e minúsculas.
true
false
cpp_sort_includes_priority_case_sensitive = false
cpp_sort_includes_priority_style

Controla se a ordenação tem em conta o estilo de colchetes. ignore Ordena sem considerar os parênteses. quoted os sorts citados incluem acima o ângulo-parêntese inclui. angle_brackets sorts ângulo-bracket inclui as citações acima incluídas.
ignore
quoted
angle_brackets
cpp_sort_includes_priority_style = quoted

As seguintes definições estão disponíveis a partir do Visual Studio 2026:

Configuração Valores Example
cpp_include_cleanup_format_after_edits

Quando true, executa o comando de formatação após qualquer ação de Limpeza de inclusão. Útil quando tens o formato de clang configurado para ordenar as tuas #include diretivas.
true
false
cpp_include_cleanup_format_after_edits = true
cpp_include_cleanup_sort_after_edits

Quando true, executa a funcionalidade integrada de ordenação de inclusões após qualquer ação de limpeza de inclusões. Útil quando não usa o clang-format para ordenar as suas diretivas #include.
true
false
cpp_include_cleanup_sort_after_edits = true

Suprimir mensagens de inclusão não utilizadas através de código

A partir do Visual Studio 2026, é possível suprimir mensagens de Include Cleanup numa única diretiva #include adicionando o comentário // VCIC-Excluded na mesma linha. A ferramenta de limpeza de include não sugere a remoção dessa include, mesmo que pareça não estar a ser usada. Forneça texto de justificação opcional após o marcador para que os futuros leitores saibam porque é que a inclusão está lá:

#include "Header2.h" // VCIC-Excluded: needed for the ATL macros used below

Também pode usar o menu da lâmpada para adicionar o comentário // VCIC-Excluded a uma diretiva #include. Certifique-se de que a Limpeza de inclusões está ativada em Ferramentas>Opções>Todas as definições>Linguagens>C/C++>Limpeza de código>Limpeza de inclusões, porque está desativada por predefinição. Depois, passe o cursor sobre a #include linha, selecione Outras Correções>Suprimir VCIC002 na fonte::

Captura de ecrã do menu da lâmpada do Visual Studio, a mostrar Suprimir VCIC002 no código-fonte.

O // VCIC-Excluded comentário aplica-se apenas ao #include para o ficheiro. Definir cpp_include_cleanup_excluded_files em .editorconfig aplica essa exclusão em todos os ficheiros regidos pelo .editorconfig.

Consulte também

C/C++ Inclui Visão geral de limpeza
Incluir mensagens de limpeza