CUESTIÓN
¿Qué es el fichero "StdAfx.h"?
¿Por qué no me reconoce
el compilador las llamadas de Win32 u otras de libC,
a pesar de poner el fichero de cabeceras correspondiente?
SOLUCIÓN
Cada vez que recompiláis un programa en C, el compilador tiene que
procesar primero los ficheros de cabeceras .h
que habéis
incluido con la directiva #include
. La mayor parte de
este trabajo es inútil
o ya estaba hecho en la anterior compilación.
Con el objeto de optimizar la compilación, Visual Studio ofrece la
posibilidad de generar cabeceras precompiladas. Dentro de este mecanismo
aparece el fichero StdAfx.h
que se crea al abrir un
proyecto nuevo.
El asunto es que, para el tipo de programas que nosotros hacemos,
la ventaja no es grande y, además, este fichero interfiere con el
resto de ficheros de cabeceras, por lo que os recomendamos que:
- Borréis el fichero
StdAfx.h
y su #include
correspondiente.
- En las opciones del Proyecto,
(Menú Proyecto, Propiedades de...),
visitad C/C++, "Encabezados precompilados" y en el menú
desplegable "Crear o utilizar encabezados precompilados", marcad
"No utilizar encabezados precompilados"
- El orden adecuado para no tener conflictos entre los ficheros
de cabeceras es:
- Primero los fichero de libc (stdio.h, stdlib.h, etc.),
entre < y >.
- Luego el fichero
windows.h
para que os
reconozca las llamadas de WIN32, entre < y >.
- Finalmente, los ficheros de cabeceras propios de vuestro
programa, entre comillas.
© 2006 Guillermo González Talaván.