Saltar al contenido

¿Para qué se utiliza “stdafx.h” en Visual Studio?

Solución:

Todos los compiladores de C ++ tienen un grave problema de rendimiento con el que lidiar. Compilar código C ++ es un proceso largo y lento.

La compilación de encabezados incluidos en la parte superior de los archivos C ++ es una muy proceso largo y lento. Compilar las enormes estructuras de encabezado que forman parte de la API de Windows y otras grandes bibliotecas de API es una muy, muy proceso largo y lento. Tener que hacerlo una y otra vez para cada archivo fuente de Cpp es una sentencia de muerte.

Esto no es exclusivo de Windows, sino un viejo problema al que se enfrentan todos los compiladores que tienen que compilar con una API grande como Windows.

El compilador de Microsoft puede mejorar este problema con un simple truco llamado encabezados precompilados. El truco es bastante hábil: aunque cada archivo CPP puede potencialmente y legalmente dar un significado ligeramente diferente a la cadena de archivos de encabezado incluidos en la parte superior de cada archivo Cpp (por cosas como tener diferentes macros # definidas antes de las inclusiones, o al incluir los encabezados en un orden diferente), que a menudo no es el caso. La mayoría de las veces, tenemos docenas o cientos de archivos incluidos, pero todos están destinados a tener el mismo significado para todos los archivos Cpp que se compilan en su aplicación.

El compilador puede ahorrar mucho tiempo si no tiene que empezar a compilar cada archivo Cpp más sus docenas de inclusiones literalmente desde cero cada vez.

El truco consiste en designar un archivo de encabezado especial como el punto de partida de todas las cadenas de compilación, el llamado archivo de ‘encabezado precompilado’, que comúnmente es un archivo llamado stdafx.h simplemente por razones históricas.

Simplemente enumere todos sus grandes encabezados para sus API en su archivo stdafx.h, en el orden apropiado, y luego comience cada uno de sus archivos CPP en la parte superior con un #include "stdafx.h", antes de cualquier contenido significativo (casi lo único permitido antes son los comentarios).

En esas condiciones, en lugar de comenzar desde cero, el compilador comienza a compilar a partir de los resultados ya guardados de compilar todo en stdafx.h.

No creo que este truco sea exclusivo de los compiladores de Microsoft, ni creo que fuera un desarrollo original.

Para los compiladores de Microsoft, la configuración que controla el uso de encabezados precompilados se controla mediante un argumento de línea de comando para el compilador: /Yu "stdafx.h". Como puede imaginar, el uso del stdafx.h el nombre del archivo es simplemente una convención; puede cambiar el nombre si así lo desea.

En Visual Studio 2010, esta configuración se controla desde la GUI haciendo clic con el botón derecho en un proyecto CPP, seleccionando ‘Propiedades’ y navegando a “Propiedades de configuración C / C ++ Encabezados precompilados”. Para otras versiones de Visual Studio, la ubicación en la GUI será diferente.

Tenga en cuenta que si desactiva los encabezados precompilados (o ejecuta su proyecto a través de una herramienta que no los admite), su programa no es ilegal; simplemente significa que su herramienta compilará todo desde cero cada vez.

Si está creando una biblioteca sin dependencias de Windows, puede comentar o eliminar fácilmente #includes del stdafx.h expediente. No es necesario eliminar el archivo per se, pero claramente puede hacerlo también, desactivando la configuración de encabezado de precompilación anterior.

Es un “archivo de encabezado precompilado”: cualquier encabezado que incluya en stdafx.h se procesa previamente para ahorrar tiempo durante las compilaciones posteriores. Puede leer más sobre esto aquí en MSDN.

Si está creando una aplicación multiplataforma, marque “Proyecto vacío” al crear su proyecto y Visual Studio no colocará ningún archivo en su proyecto.

“Stdafx.h” es un encabezado precompilado. Incluye archivo para archivos de inclusión estándar del sistema y para archivos de inclusión específicos del proyecto que se utilizan con frecuencia pero que se cambian con poca frecuencia, lo que reduce el tiempo de compilación y el procesamiento innecesario.

El encabezado precompilado stdafx.h se usa básicamente en Microsoft Visual Studio para que el compilador sepa los archivos que se compilaron una vez y no es necesario compilarlos desde cero. Puedes leer más sobre esto

http://www.cplusplus.com/articles/1TUq5Di1/

https://docs.microsoft.com/en-us/cpp/ide/precompiled-header-files?view=vs-2017

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *