C++ Inclure des diagnostics dans Visual Studio
À compter de Visual Studio 17.8, Visual Studio vous aide à analyser vos fichiers C++ #include
:
- Affiche la fréquence et l’emplacement d’utilisation de chaque fichier d’en-tête.
- Affiche l’heure de génération de chaque
#include
fichier, ce qui vous permet d’identifier les opportunités d’optimisation de votre temps de génération.
Activer C++ Include Diagnostics et CodeLens
La fonctionnalité Include Diagnostics C++ est désactivée par défaut. Pour l’activer, cliquez avec le bouton droit dans l’éditeur de code pour afficher le menu contextuel, puis choisissez Inclure les directives>Activer #include Diagnostics.
Le menu contextuel affiche l’option include directives mise en surbrillance, qui révèle deux options : Trier # inclure des directives et activer # inclure des diagnostics.
Les informations sur vos #include
fichiers sont affichées via CodeLens, qui est désactivée par défaut. Pour activer les paramètres CodeLens appropriés, accédez à l’Éditeur>de texte Options>outils>Tous les langages>CodeLens et vérifiez que les références de #include C++ et afficher les heures de compilation C++ sont activées.
La fenêtre options est définie sur Éditeur de texte > Toutes les langues > CodeLens. Les options Afficher C++ # incluent les références et les options Afficher les heures de compilation C++sont mises en surbrillance.
Afficher les #include
références
Pour essayer Include Diagnostics, créez un projet de console C++. Remplacez le contenu du fichier principal .cpp
par le code suivant :
#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);
}
Lorsque les diagnostics Include C++ sont activés, le nombre de fois où le code d’un fichier d’en-tête est référencé dans le fichier de code actuel s’affiche au-dessus du fichier d’en-tête. Il ressemble à ceci pour l’exemple de code précédent :
6 references
#include <iostream>
5 references
#include <vector>
Dans l’éditeur de code, sélectionnez 5 références ci-dessus #include <vector>
et un résumé des emplacements d’utilisation du <vector>
code dans ce fichier :
La fenêtre de contexte Include Diagnostics C++ indique qu’il existe cinq emplacements dans le code où le code du fichier d’en-tête de vecteur est utilisé dans le fichier de code actuel. Par exemple, il est utilisé deux fois sur la définition de la fonction add10, comme valeur de retour et paramètre. Il est utilisé sur la ligne 17 dans la déclaration de newVec, et ainsi de suite.
Sélectionnez un élément pour accéder à son emplacement dans votre code.
Afficher l’heure #include
de génération
Pour voir l’heure de génération de chaque fichier que vous #include
créez, commencez par générer à l’aide de Build Insights.
Activez Build Insights dans la barre de menus principale en sélectionnant Build>Run Build Insights on Solution>Build Build. Une fois la build terminée, une fenêtre apparaît pour répertorier les heures de génération des différents fichiers compilés. Revenez à la fenêtre de code source et l’heure de génération de chaque #include
fichier s’affiche dans CodeLens. Il ressemble à ceci :
6 references | Build: 0.3560s
#include <iostream>
5 references | Build 0.0360s
#include <vector>
Si vous avez une #include
directive qui est utilisée rarement, mais a un impact significatif sur votre temps de compilation, cet outil peut vous aider à l’identifier.
Dans cet article, vous avez vu comment activer C++ Include Diagnostics et CodeLens, et comment utiliser C++ Include Diagnostics pour analyser la fréquence d’utilisation d’un fichier Include et l’impact sur le #include
temps de génération.
Voir aussi
Vue d’ensemble d’Include Cleanup pour C/C++
Messages Include Cleanup