preprocessor directives c
Una mirada detallada a las directivas de preprocesador en C ++.
El preprocesador es una característica única de C ++. En C ++, tenemos pasos como compilación, vinculación y ejecución para un programa típico. En realidad, tenemos muchas otras características en un programa C ++ que deben procesarse antes de pasar el programa para su compilación.
Para ello, se lleva a cabo un paso especial llamado preprocesamiento. El preprocesamiento se realiza antes del proceso de compilación y las características especiales se preprocesan. Como resultado, se obtiene un programa C ++ expandido y luego se pasa al compilador.
=> Visite aquí para aprender C ++ desde cero.
Lo que vas a aprender:
- Visión general
- Directivas de inclusión de archivos
- Directivas de definición de macros
- Directivas de compilación condicional
- Los operadores # & ##
- Otras Directivas
- Macros predefinidas
- Conclusión
- Lectura recomendada
Visión general
Las características especiales para el preprocesamiento se identifican mediante una entidad denominada “directiva de preprocesador”. Estas directivas de preprocesador le dicen al compilador que cierta información en el programa C ++ marcado con directivas de preprocesador debe preprocesarse antes de la compilación.
Tenga en cuenta que en C ++ todas las directivas de preprocesador comienzan con un símbolo '#'. En el momento en que el preprocesador (parte del compilador) encuentra el símbolo #, la información que sigue al símbolo # se procesa previamente antes de pasar el programa al compilador.
A diferencia de las otras sentencias de C ++, las directivas de preprocesador no terminan en punto y coma.
En este tutorial, exploraremos las diversas directivas de preprocesador compatibles con C ++.
Directivas de inclusión de archivos
#incluir
La directiva de inclusión de archivos #include nos permite incluir otros archivos en nuestro programa fuente. Podemos incluir cualquier archivo de encabezado que contenga definiciones de varias funciones predefinidas en nuestro programa usando estas funciones. Podemos incluir archivos de encabezado en nuestro programa usando la siguiente sintaxis.
|_+_|Ejemplo: #incluir
Ya lo hemos visto en nuestros programas C ++. El encabezado iostream contiene las funciones necesarias para la transmisión de datos de entrada / salida como cout, cin, etc.
A medida que nuestros programas crecen o la funcionalidad se vuelve compleja, es posible que deseemos dividir nuestro programa en varios archivos o importar la funcionalidad de los otros archivos. En este caso, utilizamos archivos definidos por el usuario. Para incluir archivos definidos por el usuario en nuestro programa, podemos utilizar la siguiente sintaxis de la directiva #include.
|_+_|Ejemplo: #include 'vector_int.h'
Este es un archivo de encabezado definido por el usuario que tenemos la intención de incluir en nuestro programa para usar su funcionalidad.
El siguiente ejemplo de código muestra el uso de la directiva #include.
Preguntas y respuestas de la entrevista del servidor SQL para experimentados con ejemplos|_+_|
Producción:
Este es un ejemplo que demuestra la directiva de inclusión #include.
Como se muestra, hemos usado la directiva #include para incluir la funcionalidad del encabezado en nuestro programa.
Directivas de definición de macros
#define
La directiva #define se usa para definir las constantes simbólicas o macros en el programa C ++.
La forma general de una directiva #define es:
|_+_|Cuando un preprocesador encuentra la macro en el programa, el preprocesador reemplaza esta macro con el código que se define usando la directiva #define antes de que el código se pase al compilador.
El siguiente ejemplo de código muestra una constante simbólica RADIUS que se define usando la directiva #define y su uso en el programa.
|_+_|Producción:
Área de un círculo: 78,55
Como se muestra en el programa, podemos hacer uso de la constante simbólica RADIUS en nuestro código y será reemplazada por el valor definido para ella usando la directiva #define.
dónde encontrar videos de realidad virtual
Podemos usar la directiva #define para definir un código de función adecuado. Estas funciones suelen ser funciones pequeñas.
A continuación se muestra un ejemplo.
|_+_|Producción:
El área de un rectángulo es: 100
Aquí, usando la directiva #define, hemos definido una función REC_AREA que toma dos argumentos, es decir, la longitud y el ancho y calcula el área de un rectángulo. En la función principal, solo hacemos uso de esta macro y le proporcionamos dos argumentos para obtener el área de un rectángulo.
#undef
Las macros en un programa definido con la directiva #define duran hasta que no están definidas usando la directiva #undef. Una vez que el programa encuentra #undef, el uso posterior de macro (no definido por #undef) dará un error de compilación.
En el programa anterior, si solo damos una instrucción #undef REC_AREA después de las declaraciones enteras, entonces el programa dará un error de compilación.
Directivas de compilación condicional
Además de las directivas explicadas anteriormente, C ++ también proporciona las siguientes directivas que se pueden usar para la compilación condicional de código. Estas directivas se pueden usar en líneas similares de la instrucción if-else de C ++.
Por ejemplo, podemos activar o desactivar DEBUG para un programa usando estas directivas condicionales.
Algunas de las directivas de compilación condicional proporcionadas en C ++ incluyen:
- #si
- #elif
- #terminara si
- #ifdef
- #ifndef
- #demás
El siguiente programa demuestra el uso de directivas de compilación condicional en un programa C ++.
|_+_|Producción:
Seguimiento: inicio de la función principal
El máximo es 100
Traza: fin de la función principal
En el programa anterior, usamos la directiva #ifdef - #endif para definir un DEBUG para el programa. Luego, indefinimos la función macro MAX usando la directiva #undef. La directiva de compilación condicional construye #ifdef - #endif comprueba si DEBUG está configurado y, si está configurado, imprime pocos mensajes en el programa.
Los operadores # & ##
Los operadores # y ## son dos operadores especiales que se utilizan respectivamente para convertir un token de texto en una cadena que se mostrará y concatenar dos tokens.
A continuación se muestra un ejemplo que demuestra ambos operadores.
|_+_|Producción:
MKSTR (Hola mundo) = Hola mundo
concat(x,y) = 100
En el programa anterior, definimos MKSTR con un argumento x. Tiene cuerpo #x. Cuando imprimimos este MKSTR usando el argumento 'Hola mundo', vemos que debido a #x, el argumento se convierte en una cadena y se muestra en la salida.
A continuación, hemos definido una función concat con dos argumentos ay b. En el cuerpo especificamos un ## b. La expresión a ## b es igual a ab. Por lo tanto, en la función principal cuando llamamos a concat (x, y), en realidad se evalúa como xy, que es igual a la variable entera que definimos.
Otras Directivas
#error
La sintaxis general de la directiva #error es:
algoritmo de ordenación por inserción de c ++|_+_|
Cuando el compilador encuentra la directiva #error, muestra error_message y la compilación se detiene. El argumento mensaje_error puede contener una o más palabras con o sin comillas.
#línea
Esto le dice al compilador que cambie el número de línea y el nombre de archivo del compilador almacenados internamente al número de línea y el nombre de archivo dados.
#línea secuencia de dígitos ('nombre de archivo')
La secuencia de dígitos puede ser una constante entera.
Ejemplo:#line 200 test.c
En el ejemplo anterior, el número de línea almacenado internamente se establece en 200 y el nombre del archivo se cambia a test.c.
#pragma
Proporciona instrucciones definidas por la implementación al compilador. Estas instrucciones son específicas del compilador y la plataforma. Si la instrucción no coincide, la directiva se ignora sin generar un error de sintaxis.
Macros predefinidas
C ++ también define numerosas macros predefinidas que pueden ser utilizadas por los programadores.
Algunas de estas macros se tabularizan a continuación.
| Macro predefinida | Descripción |
|---|---|
| __EXPEDIENTE__ | El nombre de archivo actual del programa que se está compilando |
| __FECHA__ | Fecha de traducción del código fuente en código objeto en el formato mes / día / año |
| __HORA__ | Hora en el formato hora: minuto: segundo en el que se compila el programa |
| __LÍNEA__ | El número de línea actual del programa que se está compilando. |
| __cplusplus | Constante entera que se define para cada versión del compilador |
El siguiente programa muestra estas macros en un programa.
|_+_|Producción:
__LINE__: 5
__FILE__: prog.cpp
__FECHA__: 15 de abril de 2019
__TIME__: 12: 09: 15
__cplusplus: 201402
La salida del programa anterior está en línea con la explicación de las macros predefinidas arriba y se explica por sí misma.
Conclusión
En este tutorial, hemos visto varias directivas de preprocesador proporcionadas por C ++ junto con sus ejemplos. Las directivas de preprocesador nos ayudan a escribir programas más eficientes y programas más legibles hasta cierto punto.
Las directivas de compilación condicional también nos permiten ramificar la salida de nuestro programa de varias formas.
=> Busque toda la serie de formación en C ++ aquí.
Lectura recomendada
- Programa de Afiliados de Ayuda para Pruebas de Software!
- Escriba y gane: programa para probadores de control de calidad experimentados
- Tutorial de Unix Pipes: Pipes en la programación Unix
- Funciones de biblioteca en C ++
- 70+ MEJORES Tutoriales de C ++ para aprender programación C ++ GRATIS
- Argumentos de la línea de comandos en C ++
- Iteradores en STL
- Listas de inicializadores en C ++