Recientemente tuve un proyecto de clase donde tuve que hacer un programa con G ++.
Usé un archivo MAKE y, por alguna razón, ocasionalmente dejaba un archivo .h.gch.
A veces, esto no afectó a la compilación, pero de vez en cuando daría lugar a que el compilador emitiera un error por un problema que se había solucionado o que no tenía sentido.
Tengo dos preguntas:
1) ¿Qué es un archivo .h.gch y para qué se utiliza? y
2) ¿Por qué causaría tales problemas cuando no se limpió?
Respuestas:
Un
.gch
archivo es un encabezado precompilado.Si
.gch
no se encuentra, se utilizarán los archivos de encabezado normales.Sin embargo, si su proyecto está configurado para generar encabezados precompilados, los hará si no existen y los usará en la próxima compilación.
A veces, el
*.h.gch
archivo se corrompe o contiene información desactualizada, por lo que eliminar ese archivo y volver a compilarlo debería solucionarlo.fuente
Si desea conocer un archivo, simplemente escriba en la terminal
file a.h.gch
da:fuente
.h.gch
archivo. Sospecho que necesita archivos de base de datos adecuados para esto.Es un encabezado precompilado de GCC.
Wikipedia tiene una explicación medio decente, http://en.wikipedia.org/wiki/Precompiled_header
fuente
a) Son encabezados precompilados: http://gcc.gnu.org/onlinedocs/gcc/Precompiled-Headers.html
b) Contienen información "almacenada en caché" de archivos .h y deben actualizarse cada vez que cambie el archivo .h respectivo. Si no sucede, tiene dependencias incorrectas establecidas en su proyecto
fuente
Otras respuestas son completamente precisas con respecto a lo que es un archivo gch. Sin embargo, el contexto (en este caso, un principiante que usa g ++) lo es todo. En este contexto, hay dos reglas:
Nunca, nunca, coloque un archivo .h en una línea de compilación g ++. Solo archivos .cpp. Si un archivo .h se compila accidentalmente, elimine los archivos * .gch
Nunca, nunca, ponga un archivo .cpp en una instrucción #include.
Si se rompe la regla uno, en algún momento ocurrirá el problema descrito en la pregunta. Si se rompe la regla dos, en algún momento el enlazador se quejará de símbolos definidos de forma múltiple.
fuente