Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Począwszy od programu Visual Studio 17.8, program Visual Studio ułatwia analizowanie plików C++ #include :
- Wyświetla, jak często i gdzie jest używany element z każdego pliku nagłówka.
- Wyświetla czas kompilacji dla każdego
#includepliku — co pomaga zidentyfikować możliwości optymalizacji czasu kompilacji.
Włączanie diagnostyki dołączania języka C++ i funkcji CodeLens
Funkcja dołączania diagnostyki języka C++ jest domyślnie wyłączona. Aby ją włączyć, kliknij prawym przyciskiem myszy w edytorze kodu, aby wyświetlić menu kontekstowe, a następnie wybierz pozycję Uwzględnij dyrektywy>Włącz #include diagnostyki.
W menu kontekstowym jest wyróżniona opcja dołączania dyrektyw, która ujawnia dwie opcje: Sortuj dyrektywy dołączania # i włącz # dołącz diagnostykę.
Informacje o #include plikach są wyświetlane za pośrednictwem funkcji CodeLens, która jest domyślnie wyłączona. Aby włączyć odpowiednie ustawienia funkcji CodeLens, przejdź do pozycji Narzędzia>Opcje>edytora>tekstu Wszystkie języki>CodeLens i upewnij się, że oba odwołania pokaż #include języka C++ i Czas kompilacji Programu C++ są włączone.
Okno opcji jest ustawione na Edytor tekstu > Wszystkie języki > CodeLens. Opcje Pokaż #C++ zawierają odwołania i Pokaż czas kompilacji języka C++ są wyróżnione.
Wyświetlanie #include odwołań
Aby wypróbować dołączanie diagnostyki, utwórz nowy projekt konsoli języka C++. Zastąp zawartość pliku głównego .cpp następującym kodem:
#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);
}
Po włączeniu diagnostyki dołączania języka C++ kod z pliku nagłówka jest wyświetlany powyżej pliku nagłówka. Wygląda to podobnie do poprzedniego przykładu kodu:
6 references
#include <iostream>
5 references
#include <vector>
W edytorze kodu wybierz 5 odwołań powyżej #include <vector> i podsumowanie lokalizacji, w których jest wyświetlany kod z <vector> tego pliku:
Okno kontekstowe Dołączanie diagnostyki języka C++ pokazuje, że w kodzie jest używanych pięć miejsc, w których kod z pliku nagłówka wektora jest używany w bieżącym pliku kodu. Na przykład jest używany dwukrotnie w definicji funkcji add10 jako wartość zwracana i parametr. Jest on używany w wierszu 17 w deklaracji newVec itd.
Wybierz element, aby przejść do jego lokalizacji w kodzie.
Wyświetlanie #include czasu kompilacji
Aby wyświetlić czas kompilacji dla każdego pliku #include, najpierw skompiluj przy użyciu funkcji Build Insights.
Włącz pozycję Build Insights (Kompiluj szczegółowe informacje) na pasku menu głównego, wybierając pozycję Build Run Build Insights on Solution Build (Kompiluj>szczegółowe informacje o kompilacji w kompilacji rozwiązania).> Po zakończeniu kompilacji zostanie wyświetlone okno z listą czasów kompilacji dla różnych skompilowanych plików. Wróć do okna kodu źródłowego, a czas kompilacji dla każdego #include pliku jest wyświetlany w funkcji CodeLens. Wygląda podobnie do następującego:
6 references | Build: 0.3560s
#include <iostream>
5 references | Build 0.0360s
#include <vector>
Jeśli masz dyrektywę #include , która jest używana rzadko, ale ma znaczący wpływ na czas kompilacji, to narzędzie może pomóc go zidentyfikować.
W tym artykule pokazano, jak włączyć diagnostykę dołączania języka C++ i funkcję CodeLens oraz jak używać diagnostyki dołączania języka C++, aby przeanalizować, jak często coś z pliku dołączanego jest używane i jak #include wpływa na czas kompilacji.
Zobacz też
Omówienie oczyszczania dołączania języka C/C++
Uwzględnij komunikaty oczyszczania