Pregunta

Mirando una base de código fuente abierta encontré este código:

#include "StableHeaders.h"
#include "polygon.h"
#include "exception.h"
#include "vector.h"
...

Ahora, StableHeaders.h es un encabezado precompilado que se incluye mediante un cpp 'control' para forzar su generación. Los tres elementos incluidos que aparecen después del encabezado precompilado también se incluyen en el archivo StableHeaders.h de todos modos. Mi pregunta es, ¿se incluyen estos archivos dos veces para que la base del código se base en compiladores que no admiten encabezados precompilados? Como supongo que incluir guardias / almacenamiento en caché del encabezado hará que los múltiples incluidos sean redundantes de todos modos ...

EDIT por cierto, el archivo stableheaders.h tiene un cheque para win32 (aproximadamente) por lo que, de nuevo, supongo que el include inside stableheaders.h no se incluirá en compiladores que no admiten encabezados precompilados.

¿Fue útil?

Solución

Los compiladores que no admiten encabezados precompilados solo incluirían StableHeaders.h y lo repasarán cada vez (en lugar de usar el archivo precompilado). No causará ningún problema ni solucionará ningún problema para ciertos compiladores como usted lo pidió. Creo que es solo un pequeño 'error' que probablemente ocurrió con el tiempo durante el desarrollo.

Otros consejos

¡Creo que tú mismo respondiste la pregunta! Los encabezados precompilados son una característica del compilador. Si el guardia está presente, los encabezados no se incluirán dos veces, en cualquier caso.

La única razón que se me ocurre para proteger el encabezado precompilado e incluir las cosas de todos modos es la velocidad. La razón para usar encabezados precompilados es acelerar los tiempos de compilación, esto funciona al incluir y compilar el contenido del encabezado precompilado. Al hacer esto, puede incluir encabezados que solo son utilizados por el 75% de los archivos de origen y aún está Más rápido que no hay encabezados precompilados.

Sin embargo, si las otras plataformas no admiten encabezados compilados previamente, solo desea incluir los archivos de encabezado necesarios para este archivo fuente. Por lo tanto, si el encabezado precompilado contiene archivos que solo requieren algunos archivos de origen, es más rápido simplemente incluir y compilar los archivos de encabezado que necesita.

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