Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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.
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:
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:
O filtro de lista pendente está definido para **Build + IntelliSense**. É visível um aviso: VCIC002 - '#include
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.
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.
A linha para '#include
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:
O filtro da lista pendente está definido para **Build + IntelliSense**. É visível um aviso: VCIC002 - '#include
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
#includeque 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
#includeas 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.
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.
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. |
nonesuggestionwarningerror |
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. |
nonesuggestionwarningerrordimmed |
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. |
nonesuggestionwarningerror |
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. |
truefalse |
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. |
ignorequotedangle_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. |
truefalse |
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. |
truefalse |
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::
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