Compartilhar via


C++ incluem diagnóstico no Visual Studio

A partir do Visual Studio 17.8, o Visual Studio ajuda você a analisar seus arquivos C++ #include :

  • Exibe com que frequência e onde algo de cada arquivo de cabeçalho é usado.
  • Exibe o tempo de compilação para cada #include arquivo, o que ajuda a identificar oportunidades para otimizar seu tempo de compilação.

Habilitar C++ Include Diagnostics e CodeLens

O recurso C++ Include Diagnostics está desativado por padrão. Para ativá-lo, clique com o botão direito do mouse no editor de código para abrir o menu de contexto e escolha Incluir diretivas>Ativar #include diagnóstico.

A screenshot of the context menu that appears when you right-click in the code editor area.

O menu de contexto mostra a opção incluir diretivas realçada, que revela duas opções: Classificar # incluir diretivas e ativar # incluir diagnósticos.

As informações sobre seus #include arquivos são exibidas por meio do CodeLens, que está desativado por padrão. Para ativar as configurações relevantes do CodeLens, navegue até Ferramentas>Opções>Editor>de texto Todos os idiomas>CodeLens e confirme se Mostrar referências de #include C++ e Mostrar tempos de compilação C++ estão habilitados.

A screenshot of the options window.

A janela de opções é definida como Editor de Texto > Todos os Idiomas > CodeLens. As opções Mostrar C++ # incluem referências e Mostrar tempos de compilação C++ são realçadas.

Ver #include referências

Para testar o Include Diagnostics, crie um novo projeto de console C++. Substitua o conteúdo do arquivo principal .cpp com o seguinte código:

#include <iostream>
#include <vector>

// a function that takes a vector of integers and prints them out
void print(std::vector<int> &vec)
{
    for (int i : vec)
    {
        std::cout << i << std::endl;
    }
    std::cout << std::endl;
}

// a function that takes a vector of integers and adds 10 to each element of the vector and store the result in a new vector
std::vector<int> add10(std::vector<int>& vec)
{
    std::vector<int> newVec;
    for (int i : vec)
    {
        newVec.push_back(i + 10);
    }
    return newVec;
}

int main()
{
    std::vector<int> vec = { 7, 5, 16, 8 };

    print(vec);
    auto newVec = add10(vec);
    print(newVec); 
}

Quando o C++ Include Diagnostics está ativado, o número de vezes que o código de um arquivo de cabeçalho é referenciado no arquivo de código atual é exibido acima do arquivo de cabeçalho. Fica assim para o exemplo de código anterior:

6 references
#include <iostream>
5 references
#include <vector>

No editor de código, selecione 5 referências acima #include <vector> e um resumo dos locais onde o código de <vector> é usado neste arquivo é exibido:

A screenshot of the C++ Include Diagnostics context window showing where code from the vector header file is used.

A janela de contexto C++ Include Diagnostics mostra que há cinco locais no código onde o código do arquivo de cabeçalho vetorial é usado no arquivo de código atual. Por exemplo, ele é usado duas vezes na definição da função add10, como um valor de retorno e parâmetro. Ele é usado na linha 17 na declaração de newVec, e assim por diante.

Selecione um item para ir para seu local em seu código.

Ver #include tempo de compilação

Para ver o tempo de compilação de cada arquivo que você #include, primeiro compile usando o Build Insights.

Ative o Build Insights na barra de menus principal selecionando Build>Run Build Insights on Solution>Build. Depois que a compilação for concluída, uma janela aparecerá para listar os tempos de compilação para os vários arquivos que são compilados. Retorne à janela do código-fonte e o tempo de compilação para cada #include arquivo é exibido no CodeLens. É semelhante a isto:

6 references | Build: 0.3560s
#include <iostream>
5 references | Build 0.0360s
#include <vector>

Se você tiver uma #include diretiva que é usada com pouca frequência, mas afeta significativamente o tempo de compilação, essa ferramenta pode ajudá-lo a identificá-la.

Neste artigo, você viu como ativar o C++ Include Diagnostics e o CodeLens, e como usar o C++ Include Diagnostics para analisar com que frequência algo de um arquivo de inclusão é usado e como um #include impacto no tempo de compilação.

Confira também

Visão geral do C/C++ Include Cleanup
Mensagens do Include Cleanup