Condividi tramite


Includere diagnostica in C++ in Visual Studio

A partire da Visual Studio 17.8, Visual Studio consente di analizzare i file C++ #include :

  • Visualizza la frequenza e la posizione in cui viene usato un elemento di ogni file di intestazione.
  • Visualizza il tempo di compilazione per ogni #include file, che consente di identificare le opportunità per ottimizzare il tempo di compilazione.

Abilitare La diagnostica di inclusione di C++ e CodeLens

La funzionalità Di diagnostica di inclusione C++ è disattivata per impostazione predefinita. Per attivarlo, fare clic con il pulsante destro del mouse nell'editor di codice per visualizzare il menu di scelta rapida e scegliere Includi direttive>Attiva #include Diagnostica.

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

Il menu di scelta rapida mostra l'opzione di inclusione direttive evidenziata, che rivela due opzioni: Sort # include direttive e turn # include diagnostics on.

Le informazioni sui #include file vengono visualizzate tramite CodeLens, che è disattivato per impostazione predefinita. Per attivare le impostazioni di CodeLens pertinenti, passare a Strumenti>Opzioni>Editor>di testo Tutti i linguaggi>CodeLens e verificare che siano abilitati sia Mostra riferimenti #include C++ che Mostra tempi di compilazione C++.

A screenshot of the options window.

La finestra delle opzioni è impostata su Editor di testo > Tutti i linguaggi > CodeLens. Le opzioni Mostra C++ # includono riferimenti e Mostra ora di compilazione C++ sono evidenziate.

Visualizzare #include i riferimenti

Per provare Includi diagnostica, creare un nuovo progetto console C++. Sostituire il contenuto del file principale .cpp con il codice seguente:

#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 la diagnostica di inclusione C++ è attivata, il numero di volte in cui viene fatto riferimento al codice da un file di intestazione nel file di codice corrente viene visualizzato sopra il file di intestazione. È simile al seguente per l'esempio di codice precedente:

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

Nell'editor di codice selezionare 5 riferimenti precedenti #include <vector> e un riepilogo dei percorsi in <vector> cui viene usato il codice in questo file:

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

La finestra di contesto Includi diagnostica C++ mostra che nel codice sono presenti cinque posizioni nel codice in cui il codice del file di intestazione vettoriale viene usato nel file di codice corrente. Ad esempio, viene usato due volte nella definizione della funzione add10, come valore restituito e parametro. Viene usato nella riga 17 nella dichiarazione di newVec e così via.

Selezionare un elemento per passare alla relativa posizione nel codice.

Visualizzare il #include tempo di compilazione

Per visualizzare il tempo di compilazione per ogni file #include, prima compilazione usando Build Insights.

Attivare Build Insights (Compila informazioni dettagliate) dalla barra dei menu principale selezionando Build Run Build Insights on Solution Build (Compila>informazioni dettagliate sulla compilazione della soluzione).> Al termine della compilazione, viene visualizzata una finestra per elencare i tempi di compilazione per i vari file compilati. Tornare alla finestra del codice sorgente e il tempo di compilazione per ogni #include file viene visualizzato in CodeLens. L'aspetto è simile al seguente:

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

Se si dispone di una #include direttiva usata raramente, ma influisce significativamente sul tempo di compilazione, questo strumento può essere utile per identificarlo.

In questo articolo è stato illustrato come attivare La diagnostica di inclusione di C++ e CodeLens e come usare La diagnostica di inclusione C++ per analizzare la frequenza con cui viene usato un file di inclusione e come #include influisce sul tempo di compilazione.

Vedi anche

Panoramica di C/C++ Include Cleanup
Includi messaggi di pulizia