Pregunta

Cuando vemos #include <iostream>, se dice que es un preprocesador Directiva .

#include ---> Directiva

Y, pienso:

<iostream> ---> preprocesador

Pero, ¿qué se entiende por "preprocesador" y "directiva"?

¿Fue útil?

Solución

Puede ayudar a pensar en la relación entre una "instrucción" y ser "instrucciones dadas" (es decir, órdenes). "Directivas del preprocesador" son las direcciones a la preprocesador sobre los cambios que debe realizar en el código antes de las últimas etapas de la patada en la compilación. Pero, ¿cuál es el preprocesador? Bueno, de nombre es un poco recursivo: es simplemente allí para procesar el código fuente textual, la modificación de varias maneras. Este proceso adicional da más flexibilidad en la selección, la combinación e incluso la generación de partes del programa.

EDITAR abordar @ comentario de SWEngineer: Piense en el preprocesador de ser un programa separado que modifica el programa de C ++, entonces da su salida a la "real" compilador de C ++ (esto es más o menos la forma en que solía ser). Cuando el preprocesador ve "# include" que piensa "ahhha - esto es algo que entiendo, voy a cuidar de esto y no sólo tiene que pasar a través ciegamente al compilador de C ++". Así, se busca en una serie de directorios (algunos estándares como / usr / include y donde el compilador instalado sus propias cabeceras, así como otros especificados usando -I en la línea de comandos) en busca de un archivo llamado "iostream". Cuando lo encuentra, entonces se sustituye la línea de entrada en el programa diciendo "# include" con el contenido completo del archivo llamado "iostream", añadiendo el resultado a la salida. PERO, movimientos siguientes a la primera línea se lee en el archivo "iostream", en busca de más directivas que entiende.

Por lo tanto, el preprocesador es muy simple. Se puede entender #include, #define, si # / # elif / #endif, #warning, pero no mucho más. No tiene ni idea de lo que es un "int", una plantilla, una clase, o cualquiera de esas cosas "real" C ++. Es más como algún editor automático que corta y pega partes de los archivos y códigos en torno, la preparación del programa que el compilador de C ++ adecuada finalmente ver y procesar. El preprocesador es todavía muy útil, porque sabe cómo encontrar las partes del programa en todos aquellos directorios diferentes (la siguiente etapa en la compilación no necesita saber nada acerca de eso), y se puede eliminar el código que la fuerza de trabajo en algún otro sistema informático, pero no sería válida en la que está en uso. También puede permitir que el programa utilice una palabra, macro declaraciones concisas que generan una gran cantidad de bienes código C ++, por lo que el programa sea más manejable.

Otros consejos

#include es el preprocesador Directiva , <iostream> es sólo un argumento incluidos Además de esta directiva, que en este caso pasa a ser un nombre de archivo.

Algunas directivas del preprocesador toman argumentos, algunos no lo hacen, por ejemplo.

#define FOO 1

#ifdef _NDEBUG
    ....
#else
    ....
#endif

#warning Untested code !

La característica común es que todos ellos comienzan con #.

En Olden tiempos el preprocesador era una herramienta separada que pre-procesado código fuente antes de pasarla a la parte delantera de extremo del compilador, la realización de sustituciones de macro y incluyendo archivos de cabecera, etc. Estos días la pre- procesador suele ser una parte integral del compilador, pero esencialmente sólo hace el mismo trabajo.

directivas del preprocesador, como #define y #ifdef, se suele utilizar para hacer que los programas de código fácil de cambiar y fácil de compilar en diferentes entornos de ejecución. Directivas del archivo de origen dicen que el preprocesador para realizar acciones específicas. Por ejemplo, el preprocesador puede reemplazar fichas en el texto, insertar el contenido de otros archivos en el archivo de origen ...

#include es un significado directiva de preprocesador que es utilizado por el preprocesador parte del compilador. Esto sucede 'antes' el proceso de compilación. El #include necesita especificar 'qué' que incluyen, esto es suministrada por el iostream argumento. Esto le dice al preprocesador para incluir el iostream.h archivo.

Más información:

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