Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Lenguaje C

Preprocesador C y macros

Preprocesador C y Macros

En este tutorial, conocerá los preprocesadores c y aprenderá a usar #include, #define y compilación condicional con la ayuda de ejemplos.

El preprocesador C es un preprocesador de macros (le permite definir macros) que transforma su programa antes de compilarlo. Estas transformaciones pueden ser la inclusión de archivos de encabezado, expansiones de macros, etc.

Todas las directivas de preprocesamiento comienzan con un # símbolo. Por ejemplo,

#define PI 3.14

Algunos de los usos comunes del preprocesador C son:


Incluyendo archivos de encabezado:#include

El #include El preprocesador se utiliza para incluir archivos de encabezado en programas C. Por ejemplo,

#include <stdio.h>

Aquí, stdio.h es un archivo de cabecera. El #include la directiva del preprocesador reemplaza la línea anterior con el contenido de stdio.h archivo de encabezado.

Esa es la razón por la que necesitas usar #include <stdio.h> antes de poder usar funciones como scanf() y printf() .

También puede crear su propio archivo de encabezado que contenga la declaración de función e incluirlo en su programa utilizando esta directiva de preprocesador.

#include "my_header.h"

Visite esta página para obtener más información sobre el uso de archivos de encabezado.


Macros usando #define

Una macro es un fragmento de código al que se le da un nombre. Puede definir una macro en C usando el #define directiva de preprocesador.

He aquí un ejemplo.

#define c 299792458  // speed of light

Aquí, cuando usamos c en nuestro programa, se reemplaza con 299792458 .


Ejemplo 1:#define preprocesador

#include <stdio.h>
#define PI 3.1415

int main()
{
    float radius, area;
    printf("Enter the radius: ");
    scanf("%f", &radius);

    // Notice, the use of PI
    area = PI*radius*radius;

    printf("Area=%.2f",area);
    return 0;
}

Funciona como Macros

También puede definir macros que funcionan de manera similar a una llamada de función. Esto se conoce como macros similares a funciones. Por ejemplo,

#define circleArea(r) (3.1415*(r)*(r))

Cada vez que el programa encuentra circleArea(argument) , se reemplaza por (3.1415*(argument)*(argument)) .

Supongamos que pasamos 5 como argumento y luego se expande de la siguiente manera:

circleArea(5) expands to (3.1415*5*5)

Ejemplo 2:Uso del preprocesador #define

#include <stdio.h>
#define PI 3.1415
#define circleArea(r) (PI*r*r)

int main() {
    float radius, area;

    printf("Enter the radius: ");
    scanf("%f", &radius);
    area = circleArea(radius);
    printf("Area = %.2f", area);

    return 0;
}

Visite esta página para obtener más información sobre las macros y #define el preprocesador.


Compilación condicional

En la programación C, puede indicarle al preprocesador si debe incluir un bloque de código o no. Para hacerlo, se pueden usar directivas condicionales.

Es similar a un if declaración con una gran diferencia.

El if La declaración se prueba durante el tiempo de ejecución para verificar si un bloque de código debe ejecutarse o no, mientras que los condicionales se usan para incluir (u omitir) un bloque de código en su programa antes de la ejecución.


Usos de condicional


¿Cómo usar condicional?

Para usar condicional, #ifdef , #if , #defined , #else y #elif se utilizan directivas.


Directiva #ifdef

#ifdef MACRO     
   // conditional codes
#endif

Aquí, los códigos condicionales se incluyen en el programa solo si MACRO está definido.


Directiva #if, #elif y #else

#if expression
   // conditional codes
#endif

Aquí, expresión es una expresión de tipo entero (pueden ser números enteros, caracteres, expresión aritmética, macros, etc.).

Los códigos condicionales se incluyen en el programa solo si la expresión se evalúa a un valor distinto de cero.

El #else opcional la directiva se puede usar con #if directiva.

#if expression
   conditional codes if expression is non-zero
#else
   conditional if expression is 0
#endif

También puede agregar condicional anidado a su #if...#else usando #elif

#if expression
    // conditional codes if expression is non-zero
#elif expression1
    // conditional codes if expression is non-zero
#elif expression2
    // conditional codes if expression is non-zero
#else
    // conditional if all expressions are 0
#endif

#definido

El operador especial #defined se utiliza para probar si una determinada macro está definida o no. A menudo se usa con #if directiva.

#if defined BUFFER_SIZE && BUFFER_SIZE >= 2048
  // codes

Macros predefinidos

Aquí hay algunas macros predefinidas en la programación C.

Macro Valor
__DATE__ Una cadena que contiene la fecha actual
__FILE__ Una cadena que contiene el nombre del archivo
__LINE__ Un número entero que representa el número de línea actual
__STDC__ Si sigue el estándar ANSI C, entonces el valor es un número entero distinto de cero
__TIME__ Una cadena que contiene la fecha actual.

Ejemplo 3:Obtenga la hora actual usando __TIME__

El siguiente programa muestra la hora actual usando __TIME__ macro.

#include <stdio.h>
int main()
{
   printf("Current time: %s",__TIME__);   
}

Salida

Current time: 19:54:39

Lecturas recomendadas


Lenguaje C

  1. Resumen de R, L y C
  2. Identificadores y palabras clave de C#
  3. Clase y objeto de C#
  4. Clase y método abstractos de C#
  5. C# Clase parcial y método parcial
  6. Clase y método sellados de C#
  7. Directivas de preprocesador de C#
  8. C Palabras clave e identificadores
  9. C - Constantes y Literales
  10. C - Entrada y Salida
  11. C - Preprocesadores