Inclusión de diagnósticos de C++ en Visual Studio
A partir de Visual Studio 17.8, Visual Studio le ayuda a analizar los archivos de C++ #include
:
- Muestra la frecuencia y dónde se usa algo de cada archivo de encabezado.
- Muestra el tiempo de compilación de cada
#include
archivo, lo que le ayuda a identificar oportunidades para optimizar el tiempo de compilación.
Habilitación de C++ Include Diagnostics y CodeLens
La característica Incluir diagnóstico de C++ está desactivada de forma predeterminada. Para activarlo, haga clic con el botón derecho en el editor de código para abrir el menú contextual y elija Incluir directivas>Activar #include Diagnóstico.
El menú contextual muestra la opción incluir directivas resaltadas, que revela dos opciones: Directivas de inclusión de Sort # y activar # incluir diagnósticos.
La información sobre los #include
archivos se muestra a través de CodeLens, que está desactivada de forma predeterminada. Para activar la configuración de CodeLens pertinente, vaya a Opciones de herramientas>Editor>>de texto Todos los lenguajes>CodeLens y confirme que se habilitan las referencias #include Mostrar referencias de C++ y Mostrar tiempos de compilación de C++.
La ventana de opciones se establece en Editor de texto > Todos los idiomas > CodeLens. Las opciones Mostrar C++ # incluyen referencias y Mostrar tiempos de compilación de C++ se resaltan.
Ver #include
referencias
Para probar Incluir diagnósticos, cree un nuevo proyecto de consola de C++. Reemplace el contenido del archivo principal .cpp
por el código siguiente:
#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);
}
Cuando se activa el diagnóstico de inclusión de C++, se hace referencia al número de veces que se hace referencia al código de un archivo de encabezado en el archivo de código actual encima del archivo de encabezado. Tiene este aspecto para el ejemplo de código anterior:
6 references
#include <iostream>
5 references
#include <vector>
En el editor de código, seleccione 5 referencias anteriores #include <vector>
y se muestra un resumen de las ubicaciones desde las que se usa código en <vector>
este archivo:
La ventana Incluir diagnóstico de C++ muestra que hay cinco lugares en el código donde se usa el código del archivo de encabezado vectorial en el archivo de código actual. Por ejemplo, se usa dos veces en la definición de la función add10, como un valor devuelto y un parámetro. Se usa en la línea 17 en la declaración de newVec, etc.
Seleccione un elemento para ir a su ubicación en el código.
Visualización del tiempo de #include
compilación
Para ver el tiempo de compilación de cada archivo, #include
primero cree con Build Insights.
Active Build Insights en la barra de menús principal; para ello, seleccione Build Run Build Insights on Solution Build Build (Compilar información>de ejecución de compilación) en Solution Build (Compilar información de compilación en la compilación de la solución).> Una vez completada la compilación, aparece una ventana para enumerar los tiempos de compilación de los distintos archivos que se compilan. Vuelva a la ventana de código fuente y el tiempo de compilación de cada #include
archivo se muestra en CodeLens. Tiene un aspecto similar al siguiente:
6 references | Build: 0.3560s
#include <iostream>
5 references | Build 0.0360s
#include <vector>
Si tiene una #include
directiva que se usa con poca frecuencia, pero afecta significativamente al tiempo de compilación, esta herramienta puede ayudarle a identificarla.
En este artículo, ha visto cómo activar Diagnósticos de inclusión de C++ y CodeLens, y cómo usar Diagnósticos de inclusión de C++ para analizar la frecuencia con la que se usa algo de un archivo de inclusión y cómo #include
afecta al tiempo de compilación.
Consulte también
Introducción a la limpieza de directivas include de C/C++
Mensajes de limpieza de directivas include