Pregunta

¿Cada archivo necesita #include "stdafx.h" cuando se utilizan encabezados precompilados?O solo los archivos fuente deben incluirlo.

EDITAR:Además, mi archivo de encabezado precompilado #includes muchos encabezados STL.Pero, en mis encabezados, a veces tengo funciones que devuelven std::vector o algo así, así que necesito #include <vector> de todos modos.¿Es esto peor que incluir stdafx.h?Necesito incluir las definiciones para mi marco de prueba unitaria.

¿Fue útil?

Solución

Cada archivo de origen debe incluirlo antes de cualquier línea de no comentario. Los encabezados no necesitan incluirlo, ya que cada archivo fuente lo incluirá antes de cualquier otro encabezado.

Otros consejos

Puede establecer si desea usar un archivo de encabezado precompilado o no a nivel de proyecto o un nivel de archivo. Para la configuración del proyecto, vaya al cuadro de diálogo Propiedades del proyecto y haga clic en Propiedades de configuración / C / C ++ / encabezados precompilados. Hay una opción para crear/usar encabezado precompilado. Puede sobrescribir la configuración del nivel de proyecto en cada archivo .cpp configurando la misma opción en el cuadro de diálogo Propiedades del archivo.

Todos los archivos C/C ++ necesitan tener su encabezado precompilado en la parte superior sí, si se establece para ese proyecto. Pero puede hacer que se apague/ON por archivo C/C ++ (lo que dijo Kei).

Si tiene encabezados estándar para incluir, colóquelos todos en el encabezado precompilado. Entonces quieres necesitarlos en los archivos de encabezado normal (.h). Mientras todos los proyectos y archivos estén utilizando encabezados precompilados.

Como han dicho otros, solo sus archivos fuente deben incluir el encabezado precompilado.Sólo agregaría que, en mi opinión, el código debería compilarse correctamente con o sin encabezados precompilados.Para lograr esto, los encabezados deben ser independientes y no depender de los archivos fuente, incluidos otros encabezados requeridos.Veo el encabezado precompilado solo como una forma de acelerar la compilación y no como un repositorio de todos los encabezados usados ​​en un proyecto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top