Pregunta

Tengo un proyecto de ejemplo (no la mía) que se encuentra en Visual C ++ 6. Estoy tratando de convertirlo en Visual Studio 2008.

El proyecto mayor está utilizando encabezados precompilados. Ahora las preguntas son:

  1. ¿Cuáles son los encabezados precompilados?

  2. Dado que el proyecto mayor está utilizando encabezados precompilados. Yo también voy a utilizar en Visual Studio 2008 (el nuevo proyecto). Pero me da errores diciendo que "¿Usted se olvidó de incluir stdafx.h" , para remediar el problema, que incluyen "stdafx.h" en cada archivo de origen. Que funcionó a la perfección. Pero el proyecto más no fue incluido "stdafx.h" en todos los archivos? Entonces, ¿cómo puedo optar por no incluir "stdafx.h" en cada archivo de origen. Debido a que no todos los archivos fuente necesitan los archivos de inclusión definidos en "stdafx.h", hace sólo unos pocos. ¿Cómo se hace eso?

EDIT:? ¿Cómo exlcude algunos archivos de utilizar el encabezado precompilado

¿Fue útil?

Solución

¿Cuáles son los encabezados precompilados?

A menudo, los archivos de código fuente C ++ incluyen las cabeceras de las bibliotecas externas. En Windows se incluye windows.h. Estos archivos de cabecera pueden ser muy grandes y tomar algún tiempo para procesar. Cada vez que se compila en C ++ presentar el compilador tiene que leer y procesar miles de líneas a partir de estos archivos de cabecera. Pero las bibliotecas externas no cambian y se puede ahorrar mucho tiempo si sólo se procesa estos archivos una vez y guardar el resultado.

A precompilado encabezado es simplemente un manojo de archivos de encabezado que se ha procesado a una forma intermedia que luego puede usarse por el compilador y otra vez.

encabezados precompilados en Visual C ++

En Visual C ++ es costumbre #include todos los archivos que no cambian de cabecera en stdafx.h. A continuación, indica al compilador para crear el encabezado precompilado stdafx.pch al compilar stdafx.cpp que no hace nada, pero incluyen stdafx.h. Si desea utilizar el encabezado precompilado en otro archivo .cpp tiene que incluir stdafx.h como el primer archivo de inclusión y al instruir al compilador que use stdafx.pch para su encabezado precompilado.

Si se produce un error al no incluir stdafx.h simplemente tiene que dar instrucciones al compilador para no utilizar un encabezado precompilado para ese archivo fuente en particular. (O puede incluir stdafx.h.)

Configuración del encabezado precompilado de archivos fuente individuales

Visual C ++ le permite controlar la configuración del compilador para todo el proyecto y para los archivos individuales. Para acceder a las propiedades individuales que seleccione el archivo de origen en el explorador de soluciones, haga clic derecho sobre él 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 estos valores a menudo se quiere hacer eso para todas las configuraciones (por ejemplo, Depurar y Release ).

Cuando se está utilizando encabezados precompilados que tendrá una configuración de todo el proyecto que indica al compilador que utilice stdafx.pch para el encabezado precompilado. El stdafx.cpp tendrá una configuración individual que indica al compilador que genere stdafx.pch, y si usted tiene algunos archivos de origen que no incluye stdafx.h puede configurar ajustes individuales en ellos para no utilizar encabezados precompilados.

Otros consejos

Al compilar el código, el compilador tiene que mirar en todas las cabeceras #include saber cómo compilar el código en el archivo .cpp.

Con grandes proyectos (o los que utilizan las bibliotecas como MFC) estas cabeceras pueden obtener enormes, y por lo tanto tomar mucho tiempo para compilar.

Debido a que la mayoría de estas cabeceras no cambian a menudo (o nunca), se puede obtener el compilador para "precompilación" ellos - que los procesa y guarda su estado en un encabezado precompilado. La próxima vez que se compila, no necesita leer y recopilar todas esas cabeceras de nuevo, por lo que es mucho más rápido.

Uno de los requisitos en Visual Studio es que si se utiliza un encabezado precompilado, debe ser incluido en cada archivo en el proyecto.

Si el proyecto es pequeño, o si no la construyen a menudo, a continuación, puedes desactivar la opción "encabezado precompilado" (en la configuración del proyecto. Esto se aplica a la toda del proyecto). El único efecto que obtendrá es que puede recopilar más lentamente. O deje la opción activada y simplemente añadir #include "stdafx.h" como el primer incluyen en todos los archivos.

  1. MSDN
  2. Por lo general. es necesario incluir "stdafx.h" en todos los archivos cpp. El punto es que ellos están precompilados, y usted no tiene que preocuparse de que no todos ellos son utilizados en algún archivo concreto.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top