visual-studio-2008 - visual - vs code autoclose html
Cabeceras precompiladas (3)
Tengo un proyecto de muestra (no mío) que está en Visual C ++ 6. Estoy tratando de convertirlo a Visual Studio 2008.
El proyecto anterior usa encabezados precompilados. Ahora las preguntas son:
¿Qué son los encabezados precompilados?
Dado que el proyecto anterior usa encabezados precompilados. También los usaré en Visual Studio 2008 (el nuevo proyecto). Pero recibo errores que dicen "Olvidó incluir stdafx.h" , para remediar el problema, incluyo "stdafx.h" en cada archivo fuente. Eso funcionó perfectamente. Pero el proyecto anterior no incluía "stdafx.h" en cada archivo? Entonces, ¿cómo puedo optar por no incluir "stdafx.h" en cada archivo fuente? Como no todos los archivos fuente necesitan los archivos de inclusión definidos en "stdafx.h", solo algunos lo hacen. ¿Cómo se hace eso?
EDITAR: ¿CÓMO PUEDO EXCEDER ALGUNOS ARCHIVOS DEL USO DEL ENCABEZADO PRECOMPILLIDO?
- Ver MSDN
- Generalmente. necesita incluir "stdafx.h" en cada archivo cpp. El punto es que están precompilados, y no tiene que preocuparse de que no todos se utilicen en algún archivo concreto.
Cuando compila código, el compilador debe buscar en todos los encabezados #incluidos para saber cómo compilar el código en su archivo .cpp.
Con proyectos grandes (o que usan bibliotecas como MFC), estos encabezados pueden ser enormes y, por lo tanto, demoran mucho tiempo en compilarse.
Como la mayoría de estos encabezados no cambian con tanta frecuencia (si es que lo hacen alguna vez), puede hacer que el compilador los "precompile", los procesa y guarda su estado en un encabezado precompilado. La próxima vez que compila, no necesita leer y compilar todos esos encabezados nuevamente, por lo que es mucho más rápido.
Un requisito en Visual Studio es que si usa un encabezado precompilado, debe incluirse en cada archivo del proyecto.
Si el proyecto es pequeño o no lo hace a menudo, puede desactivar la opción "encabezado precompilado" (en la configuración del proyecto. Esto se aplica a todo el proyecto). El único efecto que obtendrás es que puede compilarse más lentamente. O deje la opción habilitada y simplemente agregue #include "stdafx.h" como la primera inclusión en cada archivo.
¿Qué son los encabezados precompilados?
A menudo, los archivos fuente de C ++ incluyen encabezados de bibliotecas externas. En Windows, incluye windows.h
. Estos archivos de encabezado pueden ser muy grandes y tardan un poco en procesarse. Cada vez que compila un archivo C ++, el compilador debe leer y procesar miles de líneas a partir de estos archivos de encabezado. Pero las bibliotecas externas no cambian y puede ahorrar mucho tiempo si solo procesa estos archivos una vez y guarda el resultado.
Un encabezado precompilado es simplemente un grupo de archivos de encabezado que se ha procesado a una forma intermedia que luego el compilador puede usar una y otra vez.
Cabeceras precompiladas en Visual C ++
En Visual C ++ es habitual stdafx.h
#include
todos sus archivos de encabezado no cambiantes en stdafx.h
. A continuación, indica al compilador que cree el encabezado precompilado stdafx.pch
mientras compila stdafx.cpp
que no hace más que incluir stdafx.h
. Si desea utilizar el encabezado precompilado en otro archivo .cpp
, debe incluir stdafx.h
como primer archivo de inclusión e indicar al compilador que use stdafx.pch
para su encabezado precompilado.
Si obtiene un error acerca de no incluir stdafx.h
, simplemente debe indicar al compilador que no use un encabezado precompilado para ese archivo fuente en particular. (O puede incluir stdafx.h
.)
Configuraciones de encabezado precompiladas para archivos fuente individuales
Visual C ++ le permite controlar la configuración del compilador para todo el proyecto y para archivos individuales. Para acceder a propiedades individuales, seleccione el archivo fuente en el explorador de soluciones, haga clic con el botón derecho y seleccione Propiedades en el menú contextual. Las opciones para los encabezados precompilados se encuentran en Propiedades de configuración => C / C ++ => Encabezados precompilados . Si modifica estas configuraciones, a menudo querrá hacer eso para todas las configuraciones (por ejemplo, Depurar y Liberar ).
Cuando utilice encabezados precompilados, tendrá una configuración para todo el proyecto que instruye al compilador a usar stdafx.pch
para el encabezado precompilado. stdafx.cpp
tendrá una configuración individual que indica al compilador que genere stdafx.pch
, y si tiene algunos archivos fuente que no incluyen stdafx.h
, puede establecer configuraciones individuales para que no usen encabezados precompilados.